HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Tetszőleges szöveg szavait kigyűjtő algoritmus


Példaprogram letöltése

9726 bájt

Egyedi kereső rendszer fejlesztésénél, vagy statisztikai alkalmazások írásánál hasznos funkció lehet a következő: egy függvénynek megadunk egy tetszőleges szöveget, melyből a függvény kigyűjti a minimum három karakteres szavakat úgy, hogy az eredmény listában minden szó maximum csak egy példányban szerepeljen. További extra lehetőség, hogy megadhatunk egy szó listát, melyben felsorolhatjuk azokat a szavakat, amelyeket nem szeretnénk az eredménylistában látni.

Függvényünk a Split nevet kapta és két paramétert vár: a felbontandó sztringet, valamint azon szavak listáját mely nem kerülhet az eredménybe. Visszatérési értékként egy sztringeket tartalmazó tömbben adja a függvény az eredményt.
    private string[] Split(string s, SortedList exclude)
    {
Az eredményeket egy SortedList osztályban tároljuk, melybe a sztringek rögtön ABC szerint rendezett formába kerülnek, így a listában történő keresés is gyorsabb lesz.
      SortedList sl = new SortedList();
      string tmp = "";
Kezdeményezünk egy ciklust, mely végigmegy a kapott sztring minden karakterén.
      foreach (char c in s)
      {
Ha a karakter szám vagy betű, vagy az aláhúzás karakter, akkor azt tároljuk egy átmeneti sztringben.
        if (Char.IsLetterOrDigit(c) || c=='_')
        {
          tmp += c;
        }
Bármi egyéb típusú karakter esetén úgy tekintjük, hogy az adott szó véget ért. Ebben az esetben ellenőrizzük, hogy az adott szó minimum három karakteres-e, vizsgáljuk, hogy van-e már az eredménylistában, mivel oda minden szó csak egy példányba kerülhet. Megnézzük azt is, hogy a szó nem szerepel-e a paraméterként kapott tiltó listán. Ha a szó minden próbált kiállt, csak akkor kerülhet a SortedList elemei közé.
        else
        {
          if (tmp.Length > 2)
          {
            if (sl.IndexOfKey(tmp) == -1)
            {
              if (exclude.IndexOfKey(tmp) == -1)
              {
                sl.Add(tmp, null);
              }
            }
          }
          tmp = "";
        }
      }
A ciklus futása után már csak elő kell állítnunk egy sztring tömböt a megfelelő tartalommal. Ehhez a SortedList Keys property-jének CopyTo függvényét használjuk, mellyel egy tömbbe másolhatjuk az ott található elemeket.
      string[] result = new string[sl.Count];
      sl.Keys.CopyTo(result, 0);
      return result;      
    }
A függvény felhasználása most már egyszerű: létrehozunk egy tiltó listát a szükséges szavakkal, majd meghívjuk a Split függvényt.
    private void button1_Click(object sender, System.EventArgs e)
    {
      SortedList exclude = new SortedList();
      exclude.Add("akár", null);
      exclude.Add("ahogy", null);
      exclude.Add("ahol", null);
      exclude.Add("akkor", null);
      listBox1.Items.Clear();
      listBox1.Items.AddRange(Split(textBox1.Text, exclude));
    }

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 679. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |