RENVOIE UNE PARTIE D'UNE CHAINE PAR RAPPORT À UN SÉPARATEUR

cs_Amadeus Messages postés 123 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 15 mars 2004 - 3 mars 2003 à 12:01
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 - 5 févr. 2005 à 01:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/12398-renvoie-une-partie-d-une-chaine-par-rapport-a-un-separateur

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
5 févr. 2005 à 01:45
Redirigé ici par ni69 qui répondait à une question posée sur le forum. ;)
On n'a pas fini de l'explorer, notre site préféré !

Dans son exemple, l'auteur a certainement voulu dire :

s := 'aaa;bb;ccc'
si on lance s1 := TokenAt(s, ';', 2)
alors s1 = 'ccc'

... vérifiez !

La fonction proposée dans le commentaire par Emandhal sera plus correcte en remplaçant :

Result := Copy(Str, 1, pos(Substr, Str) -1);

... par :

Result := Trim(Copy(Str, 1, pos(Substr, Str) -1));

si l'on tient compte des espaces éventuels, comme dans le code d'Amadeus.
Emandhal Messages postés 194 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 10 octobre 2006 3
4 mars 2003 à 12:13
Function SubString(Str: String ; Substr: String ; n: Integer): String;
var
z: Integer;
begin
Str := Str + Substr;
For z := 1 to n do
begin
Str := copy(Str, pos(Substr, Str)+length(Substr), length(Str)-pos(Substr, Str)+Length(Substr));
end;
Result := copy(Str, 1, pos(Substr, Str)-1);
end;
Ce code là aurait-il pas été plus simple? voir mieux vu que le séparateur peut-être aussi bien un Char qu'une String?
cs_Amadeus Messages postés 123 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 15 mars 2004 2
3 mars 2003 à 12:01
Fonction proposé suite à un problème de Manu00