Haluaisin tietää kuinka voin etsiä stringistä tietyn kirjaimen ja niiden määrän.
esimerkki:
string = 'suomi24 keskustelu' ja tosta pitäis etsiä kaikki s-kirjaimet ja näyttää kuinka monta niitä löytyi.
miten tämä onnistuu?
Kiitos.
Kuinka etsin stringistä?
2
583
Vastaukset
- Delphikoodaaja
Parhaiten tuo onnistuu PosEx -funktiolla.
Löytyy ainakin Delphi7:ssa StrUtils -unitista (tulee Delphi7:n mukana).
Jos käytät jotain vielä vanhempaa Delphiä, jossa ei ole ko. funktiota, niin Professional ja Enterprise -versioissa tulee VCL:n lähdekoodi mukana; tällöin etsi Pos -funktion lähdekoodi, kopioi se nimelle PosEx ja muokkaa sitä niin, että sille voi antaa parametriksi mistä merkistä alkaen etsitään.
Tosin: for (tai while) -silmukkahan tähänkin tarvitaan joka tapauksessa, ja kun vielä etsittävä on 1 merkki, niin yhtä hyvin kuin käyttää PosEx -funktiota, voit toki tehdä näinkin:
for i := 1 to length(S) do
if S[i] = 's' then begin
// s- kirjain löydetty positiosta i
end;
Jos haluat kohdella isoa ja pientä s-kirjainta samanarvoisina, niin:
for i := 1 to length(S) do
if UpCase(S[i]) = 'S' then begin
// iso tai pieni s- kirjain löydetty positiosta i
end; - Vaikkapa näin
Vaikkapa näin että
Edit1 on tuo mistä etsitään ja Edit2 on se mitä
etsitään. Label näyttää montako niitä oli.
function MontakoMerkkijonoa(Mjono, etsittava:string):integer;
var
s,e:string;
i,p:integer;
begin
s:= AnsiLowerCase(Mjono);
e :=AnsiLowerCase(etsittava);
i := 0;
Repeat
p :=ansipos(e,s) ;
if p0 then
begin
delete(s,1,p 1);
inc(i);
end;
until p=0;
result := i;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
j:integer;
begin
j := MontakoMerkkijonoa(Edit1.Text,Edit2.Text);
Label1.Caption:= IntToStr(j);
end;
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 1085541
Suomen kaksikielisyys - täyttä huuhaata
Eivätkö muuten yksilöt pysty arvioimaan mitä kieliä he tarvitsevat? Ulkomaalaiselle osaajalle riittää Suomessa kielitai964819Työeläkeloisinta 27,5 mrd. per vuosi
Tuo kaikki on pois palkansaajien ostovoimasta. Ja sitten puupäät ihmettelee miksei Suomen talous kasva. No eihän se kas1394762Mikä on vaikeinta siinä, että menetti yhteyden kaivattuun, jota vielä ajattelee?
Mikä jäi kaihertamaan? Jos jokin olisi voinut mennä toisin, mitä se olisi ollut? Mitä olisit toivonut vielä ehtiväsi san3672199- 1172041
- 1061790
- 2561567
- 3711308
Pääsit koskettamaan
Sellaista osaa minussa jota kukaan ei ole ennen koskettanut. Siksi on hyvin vaikea unohtaa sinut kokonaan.591141- 2181112