Montag, 31. Januar 2011

C#: getWordFromString(string, [int])

Mit dieser Funktion kann man einzelne Wörter aus einem String extrahieren. Wörter werden (hier) durch Leerzeichen (Spaces) und/oder Kommas getrennt. Eine Web-Adresse mit Punkten gilt also immer noch als ganzes Wort.

Beispiel:

string a=getWordFromString("Hello World"); <-- a = "Hello" string a=getWordFromString("Hello World", 2); <-- a = "World"


Alles in C# muss in einem Namespace verfügbar sein. Ich werde als Namespace BGE benutzen was kurz ist für: ben0bis Game Engine. (Erklärung Namespaces)

Da die Funktion global verfügbar ist, kommt sie in die Helpers-Klasse. Die Helpers-Klasse beeinhalted nur global verfügbare statische Helper Funktionen. (Erklärung static)

namespace BGE
{
  public static class Helpers
  {
    static public string getWordFromString(string source,int wichOne=1)
    {
      string target = "";
      int actualWord = 1;
      for (int i = 0; i < source.Length; i++)
      {
        if (source[i].ToString()==" "||source[i].ToString()==",")
        {
          if (actualWord == wichOne)
            return target;
          if(target!="")
            actualWord++;
          target = "";
        }else{
          target += source[i].ToString();
        }
      }
    }
    if (actualWord != wichOne)
      return "";
    return target;
  }
}


Was tut die Funktion genau?
Der String target wird leer initialisiert. target ist der String, der am Ende zurückgegeben wird. actualWord zeigt an, welches Wort gerade an der Reihe ist und mit wichOne kann man angeben, welches Wort man überhaupt haben will. Das erste ist die Voreinstellung.

Nun wird durch jeden Buchstaben im source-String gegangen.
Wenn der Buchstabe weder ein Leerzeichen noch ein Komma ist, wird er an den target-String rangehängt. Bei einem Leerzeichen/Komma wird überprüft ob das aktuelle Wort auch an der richtigen Stelle ist. Falls dem so ist wird das Wort zurückgegeben, ansonsten wird target geleert und actualWord um eins erhöht.

Am Schluss wird noch überprüft, ob das letzte Wort (der target-String enthält ein letztes Wort, das eventuell noch nicht überprüft wurde) gleich dem gesuchten ist und eventuell zurückgegeben.

Keine Kommentare:

Kommentar veröffentlichen