RetourForum Delphi
Nouveau compte - Se connecter - Perdu votre mot de passe?Recherche: Utilisateur - Message

Index > Forum général > Sous-chaine indépendante d'autres Sous-chainesNouveau post - Répondre
Moise
visiteur
Triste Sous-chaine indépendante d'autres Sous-chaines message: éditerle 19/08/16 à 13h37


Salut

procedure TForm1.Button1Click(Sender: TObject);
var
k,N:integer;
Chaine,SousChaine:string;
begin
N:=0;
Chaine:=('DHDDHTTY AZ DD DH ER  DRFG T DHAZA ZYTDH');
SousChaine:=('DH');

    for k := 1 to length(Chaine) do
    begin
    if  SousChaine = Copy( Chaine,k,length(SousChaine)) then
    inc(N);
    end;
    Showmessage(inttostr(N));


j'essaye de compter le nombre d'une sous chaine dans une chaine, dans Mon cas c'est
la sous-chaine(DH) dans la Chaine:=('DHDDHTTY AZ DD DH ER  DRFG T DHAZA ZYTDH')

Mon code me retourne le nombre 5 ,c'est tout a fait normal.
le problème est comment faire pour ne compter que la sous chaine indéClin d'oeil langue endante des autres sous-chaines (dans mon exemple ça sera 1 car il 1 seule DH indéClin d'oeil langue endante)
si quelqu'un sait comment faire Merci de m'en faire part

Merci a tous






[code]

tourlourou
modérateur
2937 messages
Message Re: Sous-chaine indépendante d'autres Sous-chaines message: éditerle 19/08/16 à 19h30

Elle est "indéClin d'oeil langue endante" car entourée d'espaces. Le motif à chercher est donc ' DH ' et non simplement 'DH'.

<<débutant, et pour longtemps...>>

Moise
visiteur
Content Re: Sous-chaine indépendante d'autres Sous-chaines message: éditerle 19/08/16 à 23h29


  Si la sous chaine se trouvait au début ou a la fin de la chaine le compte sera tjr faux
donc Cette façon de faire avec des espaces ne résout pas le problème
a moins que nous combinons les 3 positions , mais moi je cherche plus simple

Merci a toi tourlourou @+ 

Moise
visiteur
Content Re: Sous-chaine indépendante d'autres Sous-chaines message: éditerle 20/08/16 à 02h50

Solution trouvée

 

code



procedure TForm1.Button1Click(Sender: TObject);
var
Nsc2,i:integer;
Chaine,Sc,liste:string;
TmpChaine:TStringlist;
begin
Nsc2:=0;
Chaine:=('DHDDHTTY AZ DD DHER  DRFG T DH AZA ZYTDH');

  TmpChaine:=TStringlist.Create;
  liste  := StringReplace(Chaine,' ',#13#10, [rfReplaceAll, rfIgnoreCase]);
  TmpChaine.Text:=liste;
  for i := 0 to TmpChaine.Count -1 do
  if MatchStr('DH', [TmpChaine.Strings[i]])then
  inc(Nsc2);
  showmessage(inttostr(Nsc2));
  TmpChaine.Free;
//et le compte est bon

end;



Merci

Ghanem
visiteur
Content Re: Sous-chaine indépendante d'autres Sous-chaines message: éditerle 21/08/16 à 12h26

joli

ZeuS-[SFX]
modérateur
4750 messages
Message Re: Sous-chaine indépendante d'autres Sous-chaines message: éditerle 25/08/16 à 11h15

@Moise pour info la classe TStringList possède deux propriétés (Delimiter et DelimitedText) qui te permet directement de donner ta chaîne sans avoir besoin de passer par un string replace.
 

code



TmpChaine:=TStringlist.Create;
TmpChaine.Delimiter:=' ';
TmpChaine.DelimitedText:=liste;

Moise
visiteur
Content Re: Sous-chaine indépendante d'autres Sous-chaines message: éditerle 25/08/16 à 19h01


Je savais pas, Maintenant je sais

Merci a toi ZeuS-[SFX] et a Michel Pour le site

Index > Forum général > Sous-chaine indépendante d'autres Sous-chainesNouveau post - Répondre
 page 1 sur 1