Extraire mots avec chaine separateur

Signaler
Messages postés
3
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
7 décembre 2004
-
Messages postés
3
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
7 décembre 2004
-
Salut,
Est-il possible d'extraire les champs d'une chaine avec comme caractere de separation un espace ou plusieurs espace qui se suivent?
ex: merci de votre aide.

J'ai ecrit une fonction pour extraire les champs mais ca prend comme caractere de separation un seul caractere espace et pas plusieurs espace qui se suivent.
Merci,

5 réponses

Messages postés
215
Date d'inscription
mardi 29 juillet 2003
Statut
Membre
Dernière intervention
1 septembre 2006

Tu peux utiliser les TStringList qui permettent facilement cela.

Je n'ai pas Delphi sous les yeux , donc je peux pas te dire le nom de la propriété tout de suite...

j!nH
Messages postés
3
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
7 décembre 2004

oups mon exemple n'a pas marché
je voulais mettre un exemple dans le genre:

merci,de,,,,,,,votre,,,aide

avec ',' comme caractere de separation

merci jinh pour ta reponse je vais aller voir comment fonctionne TStringList
Messages postés
47
Date d'inscription
mardi 18 mai 2004
Statut
Membre
Dernière intervention
24 juillet 2006

Si tu n'avais qu'un seul caractère séparateur un code comme
MonStringList.Delimiter := ',';
MonStringList.DelimitedText := 'merci,de,,,,,,,votre,,,aide';

aurait suffit.

Comme tu veux des choses plus compliquées tu peux passer par une bibliothèque d'expressions rationnelles comme .html http://regexpstudio.com/FR/TRegExpr/Help/About.html
Messages postés
215
Date d'inscription
mardi 29 juillet 2003
Statut
Membre
Dernière intervention
1 septembre 2006

Je vais tenter de faire une fonction de mon coté..si ca t'interesse je peux te tenir au courant...
j!nH
Messages postés
3
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
7 décembre 2004

salut,
merci pour votre aide a tous.
J'ai réussi à faire une petite fonction qui fait ce que je veux, le code est pas tres propre mais bon. Voila ce que j'ai fait:

begin
champ:='';
j:=1;
fin:=length(ligne);
while (j<fin) do
begin
sp:=Pos(' ',ligne);
if ( sp = 0 ) then sp:=3;
champ:=champ+copy(ligne,1,sp);
delete(ligne,1,sp);
ligne:=trim(ligne);
j:=j+sp;
if (ligne ='') then j:=fin;
end;
Result:=champ;
end;

Ca ne marche qu' avec des ensembles d'espace.