Kuinka etsin stringistä?

Uuppi

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.

2

574

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. Yksi viesti häneltä ja ottaisin takaisin

      Mutta ei sitä tule. Ja ehkä parempi niin, tein jo valintani. En saanut häneltä tarpeeksi, kaikki muu meni minun edelle j
      Ikävä
      60
      2821
    2. Sä olet epävakaa

      tai ainakin yrität onnistuneesti vaikuttaa siltä. Ei sun kanssa uskalla ruveta yhtään mihinkään, menis hommat ojasta all
      Ikävä
      47
      2321
    3. Mieti miten paljon yritin

      Löytää yhteyttä kanssasi uudelleen sen väärinymmärryksen jälkeen. Koen etten tullut puoleltasi hyvin kohdelluksi mies😔
      Ikävä
      61
      1984
    4. Keskisarjan puheet

      Onko kansanedustajan sopivaa puhua tuollai vai pitäisikkö potkia pois eduskunnasta?
      Suomussalmi
      325
      1512
    5. Kaikki on hyvin rakkaani

      Ja tulee olemaan.
      Ikävä
      78
      1336
    6. En enää uskalla laittaa sulle viestiä

      Naiselta miehelle ****
      Ikävä
      64
      1286
    7. Sovitaanko ja halataanko?

      Pyydetään toisiltamme anteeksi...❤️
      Ikävä
      69
      1150
    8. En ikinä koskaan

      En tule ikinä hyväksymään!
      Tunteet
      63
      1032
    9. Olen selvästi rikki

      Narsistiset ihmiset jotenkin koukuttaa minut.
      Ikävä
      27
      996
    10. Kai jaksat vielä?

      Olisi sääli jos et…
      Ikävä
      79
      976
    Aihe