Décomposition chaine

Résolu
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015 - 14 nov. 2006 à 16:14
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015 - 15 nov. 2006 à 13:24
Bonjour,

Je reçois une chaine de caractères contenant un ensemble de champs de taille variable et sans séparateur (ch001ch02ch0003ch004...).

J'aimerai effectuer quelques vérifications sur les champs puis les enregistrer dans une table sous SQL Server.

Je pourrais utiliser .substring  et initialiser une structure par exemple mais j'aimerai faire cela de manière plus "banalisée"
En VB6 je définissiais une structure avec des string*n et je faisais un LSET (le LSET permet de copier une chaine dans une structure). Auriez vous une idée en C#
DT

7 réponses

leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
14 nov. 2006 à 16:52
sinon tu peux utiliser un objet Regex avec des groupes nommés pour extraires les champs de ta chaine
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
14 nov. 2006 à 22:03
une petite regex ;)

(?<chaine1>.{3})(?<chaine2>.{5})(?<chaine3>.{3})...

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
3
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
14 nov. 2006 à 16:40
salut,

String.split avec ch...puis affectation manuel à ta structure...

sinon est-ce que la dite chaine à un format fixe vu que tu parles de lset...

ShareVB
0
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015
14 nov. 2006 à 20:13
ShareVB : je me suis mal exprimé, j'ai mis des chxxx pour indiquer des nom de champs et des longueur. Le contenu de ma chaine serait plutot du style 123487921478CODELONG qui donnerai
Var1 = 123
Var2 = 87921
Var3 = 478
Var4 = CODE
Var5 = LONG
Je ne peux donc pas utiliser de split
--------------------------------------------
Cette chaine est en fait un message entre calculateur elle aura donc un format fixe (c-a-d Var1 toujours sur 3 car, Var2 toujours sur 5 car ...)

DT
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015
14 nov. 2006 à 20:14
Leprov : j'y avais pensé mais je peux me retrouver avec des chaines de plusieurs centaines de caractères(et donc de champs) j'ai bien peur que cela ne soit pas maintenable...

DT
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
14 nov. 2006 à 20:22
salut,

si j'ai bien compris en fait tu veux faire des string * n en VB.Net ? :

<MarshalAs(UnmanagedType.LPArray,
SizeConst=taille)>
param() As String

voir http://www.sharevb.net/Les-API-en-VB-Net.html

ShareVB
0
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015
15 nov. 2006 à 13:24
Merci à tous de vous etes penchez sur mon problème...

C'est impressionnant ce que l'on peut faire avec les regex ! Les groupes nommés correspondent parfaitement à ma demande

DT
0
Rejoignez-nous