je récupère une chaine de caractères, et je souhaiterais afficher uniquement le premier mot dans un TEdit,soit s'arrêter au premier espace...quelqu'un saurait-il m'éclairer?
merci,
je récupère une chaine de caractères, et je souhaiterais afficher uniquement le premier mot dans un TEdit,soit s'arrêter au premier espace...quelqu'un saurait-il m'éclairer?
merci,
Salut,
Afficher le premier mot d'une string :
1) Avec la fonction Trim(const S: string): string; tu supprimes les espaces du début (et ceux de la fin) de la chaine.
2) Avec la Pos(Substr: string; S: string): Integer; tu fais po:=Pos(' ',maStringSource); ce qui donne la position (po : integer) de l'espace suivant le 1er mot,
3) Puis avec la function Copy(S; Index, Count: Integer): string; tu fais monPremierMot:=Copy(maStringSource,1,po);
Par Exemple
et si tu veux n'importe quel mot, le premier ayant l'index 0, le second 1 ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 function FirstWord(const S: string): string; var Idx: Integer; begin Idx := Pos(' ', S); if Idx > 0 then Result := Copy(S, 1, Idx) else Result := ''; // ou S; end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 function GetString(const DelimitedText: string; Delimiter: Char; Index: Integer = 0): string; var idtb, idte, occ: Integer; begin Inc(Index); // Paramètre de 0 à n-1, Algo en 1 à n if Index <= 0 then Index := 1; idtb := 0; idte := 1; occ := 0; while (idte <= Length(DelimitedText)) and (occ < Index) do begin if DelimitedText[idte] = Delimiter then begin Inc(occ); if occ < Index then idtb := idte; end; Inc(idte); end; if (occ > 0) and (idte >= Length(DelimitedText)) then Inc(Occ); if occ = 0 then Result := DelimitedText else if occ = Index then if idte <= Length(DelimitedText) then Result := Copy(DelimitedText, idtb+1, idte-idtb-2) else Result := Copy(DelimitedText, idtb+1, idte-idtb-1) else Result := ''; end;
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Re-Salut,
Cela m'évoque un oubli dans mon message précédent lorsque po=0 (ou Idx=0) le premier mot c'est évidemment la chaine-source dans sa totalité il vaut mieux Result := S que de placer S en commentaire.Result := ''; // ou S;
Partager