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
518
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
Tollokin tajuaa että Timo Vornanen
oli joutunut äärimmäiseen tilanteeseen ampuessaa yhden laukauksen katuun. Ei poliisi tee tuollaista hetken mielijohteest6976329Istuva kansanedustaja epäiltynä pahoinpitelystä ja ampuma-aserikoksesta
Seiskan tietojen mukaan Timo Vornanen on epäiltynä pahoinpitelystä ja ampuma-aserikoksesta eikä kenellekään taatusti tul5273749Timo Vornanen kilahti
Mikähän sille kansanedustajalle polisiisi miehelle on noin pahasti mennyt hermot , että tulevaisuudensa pilasi totaalise1883611Pullonpalautusjärjestelmä muuttuu - paluu menneisyyteen
EU suuressa viisaudessaan on päättänyt, että pulloja pitää kierrättää. Jos oikein ymmärsin, nykyisen järjestelmänmme ti1722814Sininen farmari - Ford Focus- YFB-842 on poliisilta kadoksissa Kauhajärvellä
https://alibi.fi/uutiset/poliisilta-poikkeuksellinen-vihjepyynto-autossa-oleva-henkilo-on-avuntarpeessa/?shared=29255-2d102519- 2882245
Onko oikeudenmukaista? Yhdellä taholla yllättävä valta-asema Tähdet, tähdet -voittajan valinnassa!
Näinpä, onko sinusta tämä oikein? Viime jaksossakin voittaja selvisi vain yhden äänen erolla ja tänä sunnuntaina ensimm241603Persukansanedustaja Timo Vornanen ammuskellut Helsingissä
Poliisi siviiliammatiltaan, luvallinen ase mukana baarissa tällä hemmetin valopääpersulla. Meni eduskunnasta suoraan baa1101502No kerros nyt nainen
Kumpi mielestäsi oli se joka väärinkäsitti kaiken? Nyt voi olla jo rehellinen kun koko tilanne on jo lähes haihtunut.1001439Nainen, mietit miten minä jaksan
En voi hyvin. Nykyään elämäni on lähinnä selviytymistä tunnista ja päivästä toiseen. Usein tulee epävarma olo, että mite891220