Décomposition chaine [Résolu]

babe59 189 Messages postés vendredi 28 mai 2004Date d'inscription 27 novembre 2015 Dernière intervention - 14 nov. 2006 à 16:14 - Dernière réponse : babe59 189 Messages postés vendredi 28 mai 2004Date d'inscription 27 novembre 2015 Dernière intervention
- 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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
leprov 1163 Messages postés vendredi 23 juillet 2004Date d'inscription 21 octobre 2010 Dernière intervention - 14 nov. 2006 à 16:52
3
Merci
sinon tu peux utiliser un objet Regex avec des groupes nommés pour extraires les champs de ta chaine

Merci leprov 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de leprov
Meilleure réponse
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 14 nov. 2006 à 22:03
3
Merci
une petite regex ;)

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

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]

Merci sebmafate 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de sebmafate
ShareVB 2717 Messages postés vendredi 28 juin 2002Date d'inscription 13 janvier 2016 Dernière intervention - 14 nov. 2006 à 16:40
0
Merci
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
Commenter la réponse de ShareVB
babe59 189 Messages postés vendredi 28 mai 2004Date d'inscription 27 novembre 2015 Dernière intervention - 14 nov. 2006 à 20:13
0
Merci
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
Commenter la réponse de babe59
babe59 189 Messages postés vendredi 28 mai 2004Date d'inscription 27 novembre 2015 Dernière intervention - 14 nov. 2006 à 20:14
0
Merci
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
Commenter la réponse de babe59
ShareVB 2717 Messages postés vendredi 28 juin 2002Date d'inscription 13 janvier 2016 Dernière intervention - 14 nov. 2006 à 20:22
0
Merci
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
Commenter la réponse de ShareVB
babe59 189 Messages postés vendredi 28 mai 2004Date d'inscription 27 novembre 2015 Dernière intervention - 15 nov. 2006 à 13:24
0
Merci
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
Commenter la réponse de babe59

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.