Chercher un caractère dans un string [Résolu]

Tank01 106 Messages postés lundi 4 août 2003Date d'inscription 10 novembre 2006 Dernière intervention - 17 mai 2006 à 10:40 - Dernière réponse : Tank01 106 Messages postés lundi 4 août 2003Date d'inscription 10 novembre 2006 Dernière intervention
- 18 mai 2006 à 15:56
Bonjour,



Je souhaitais savoir comment parcourir une String caractère à caractère afin de chercher un certain caractère.

Bonne journée et merci!
Afficher la suite 

7 réponses

Répondre au sujet
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 17 mai 2006 à 12:13
+3
Utile
ah autant pour moi ... faut pas pchariser S ... ça fait l'effet inverse ... pourtant je sais que c'est une solution inutile pour un caractere unique ...

function PosChar(const SubStr : char; const S: string; Offset: Cardinal = 1): Integer;
var
  I, L : Integer;
begin
  Result := 0;
  if Offset = 1 then begin
     Result := Pos(SubStr, S);
     exit;
  end;

  I := Offset;
  L := Length(S);
  while I <= L do begin
        if S[I] = SubStr then begin
           Result := I;
           exit;
        end;
        Inc(I);
  end;
end;
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de f0xi
neosystemsteam 23 Messages postés vendredi 7 octobre 2005Date d'inscription 28 juillet 2006 Dernière intervention - 17 mai 2006 à 10:57
+1
Utile
var chaine , chaine_a_trouver: string;
      x : integer;
begin
for x : =0 to length(chaine)-1 do
 begin
  if chaine[x]=chaine_a_trouver then // votre condition ici
 end;
end;
neosystems.team@gmail.com
Commenter la réponse de neosystemsteam
exyacc 163 Messages postés dimanche 20 octobre 2002Date d'inscription 31 juillet 2008 Dernière intervention - 17 mai 2006 à 11:26
0
Utile
FONCTION POS
Renvoie la valeur d'indice du premier caractère dans une sous-chaîne spécifiée qui se trouve dans une chaîne.

Unité: System

function Pos(Substr: string; S: string): Integer;

Description

La fonction Pos recherche une sous-chaîne, Substr, à l'intérieur d'une chaîne S. Substr et S sont des expressions de type chaîne.

Pos recherche Substr à l'intérieur de S et renvoie une valeur entière correspondant à l'indice du premier caractère de Substr à l'intérieur de S. Pos fait la distinction majuscules/minuscules. Si Substr est introuvable, Pos renvoie zéro.

exemple  pos('z','klhjkhkz')
exyacc
Commenter la réponse de exyacc
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 17 mai 2006 à 12:10
0
Utile
hophop

attention les chaines sont assé particuliere a "parcourir" cela degrade les performances trés vite ...

le meilleur moyen : utiliser POS ou POSEX (unité StrUtils)

POSEX afficheras de meilleur performance qu'une methode avec boucle for.

en adaptant POSEX pour les Char uniquement, on augmente un peu les performances de celle-ci :

function PosChar(const SubStr : char; const S: string; Offset: Cardinal = 1): Integer;
var
  I, L : Integer;
  PS   : PChar;
begin
  Result := 0;
  if Offset = 1 then begin
     Result := Pos(SubStr, S);
     exit;
  end;

  I := Offset-1;
  L := Length(S)-1;
  PS:= PChar(S);
  while I <= L do begin
        if PS[I] = SubStr then begin
           Result := I+1;
           exit;
        end;
        Inc(I);
  end;
end;
Commenter la réponse de f0xi
Tank01 106 Messages postés lundi 4 août 2003Date d'inscription 10 novembre 2006 Dernière intervention - 17 mai 2006 à 14:26
0
Utile
Merci à tous pour vos solution !
Commenter la réponse de Tank01
Emandhal 199 Messages postés dimanche 2 mars 2003Date d'inscription 10 octobre 2006 Dernière intervention - 17 mai 2006 à 18:40
0
Utile
u tout le monde.
Et ca?

function PosChar(const SubStr : char; const S: string; Offset: Cardinal = 1): Integer;
var
  pS: PChar;
begin
  Result := 0;
  pS := PChar(S);
  While pS^<>#0 do
  begin
    If pS^=SubStr Then
    begin
      Result := pS-PChar(S)+1; // à vérifier le '+1' s'il est utile, je fais ca de tete là ^^
      Exit;
    end;
    Inc(pS);
  end;
end;



Je pense que c'est plus rapide, mais pour un cas comme celui là, un Pos suffit je pense.

Tout problème a sa solution... Mais en général, celle que l'on trouve n'est jamais la bonne...
Commenter la réponse de Emandhal
Tank01 106 Messages postés lundi 4 août 2003Date d'inscription 10 novembre 2006 Dernière intervention - 18 mai 2006 à 15:56
0
Utile
Merci c'est cool jai trouvé grace à vous !!
Commenter la réponse de Tank01

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.