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
570
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
Hengenvaaralliset kiihdytysajot päättyivät karmealla tavalla, kilpailija kuoli
Onnettomuudesta on aloitettu selvitys. Tapahtuma keskeytettiin onnettomuuteen. Tapahtumaa tutkitaan paikan päällä yhtei1836652- 1531895
- 1131618
- 511340
Suureksi onneksesi on myönnettävä
Että olen nyt sitten mennyt rakastumaan sinuun. Ei tässä mitään, olen kärsivällinen ❤️491083Möykkähulluus vaati kuolonuhrin
Nuori elämä menettiin täysin turhaan tällä järjettömyydellä! Toivottavasti näitä ei enää koskaan nähdä Kauhavalla! 😢411001Älä mies pidä mua pettäjänä
En petä ketään. Älä mies ajattele niin. Anteeksi että ihastuin suhun varattuna. Pettänyt en ole koskaan ketään vaikka hu98972Reeniähororeeniä
Helvetillisen vaikeaa työskennellä hoitajana,kun ei kestä silmissään yhtään läskiä. Saati hoitaa sellaista. Mitä tehdä?5899Tarvitsemme lisää maahanmuuttoa.
Väestö eläköityy, eli tarvitsemme lisää tekeviä käsiä ja veronmaksajia. Ainut ratkaisu löytyy maahanmuutosta. Nimenomaan248891- 41859