Fonction StrinField()
Publié : jeu. 08/nov./2018 10:51
Bonjour à tous
je vais bien! j’espère que vous aussi....
La commande pour récupérer les champs dans une chaine avec des délimiteurs
comme StringField(Chaine$, Index, Delimiteur$) de Purebasic n'est pas souvent prévue
dans les autres langages, elle est pourtant très pratique pour lire les fichiers.csv
voici un ptit code pour contourner cette commande ailleurs
Cordialement
kernadec
je vais bien! j’espère que vous aussi....
La commande pour récupérer les champs dans une chaine avec des délimiteurs
comme StringField(Chaine$, Index, Delimiteur$) de Purebasic n'est pas souvent prévue
dans les autres langages, elle est pourtant très pratique pour lire les fichiers.csv
voici un ptit code pour contourner cette commande ailleurs
Cordialement
kernadec
Code : Tout sélectionner
;Fonction StringField(Chaine$, Index, Délimiteur$)
Global chaine$, nb.l, c.l, i.l
chaine$ = "10000;111.1234;222.5678;06;11;2000;a1;2;b3;4;5cd;6;7;8;9E" ;chaine d un fichier,csv avec separateur ";"
If Right(chaine$, 1) <> ";"
chaine$ = chaine$+ ";" ;test si le dernier separateur de champs est present ";" car il est obligatoire
EndIf
Debug chaine$
nb = 0
For i = 1 To Len(chaine$) + 1
If Right(Mid(chaine$, 1, i), 1) = ";" ;recherche le nombre de separateur ";" dans la chaine
nb = nb + 1
EndIf
Next i
If nb <> 0
Dim champ$(nb)
champ$(1) = chaine$
For i = 1 To nb ; boucle d'extraction des champs
c = 0
Repeat
c = c + 1
Until Right(Mid(champ$(i), 1, c), 1) = ";"
champ$(1 + i)=Right(champ$(i),Len(champ$(i))-c)
Debug Left(champ$(i), c - 1) ; affichage de chaque champs
Next i
EndIf