Sprache: C#
Methode zum Zählen der Wörter
public static int WoerterZahlen(string woerter)
{
return Regex.Matches(woerter, @"[S]+").Count;
}
public static int WoerterZahlen(string woerter)
{
return Regex.Matches(woerter, @"[S]+").Count;
}
Alte URL:
/snippet/zaehlen-der-woerter/13085
warum nutzt du nicht die integrierte String.Split-Funktion?
Die dürfte deine Methode um das vielfache in der Geschwindigkeit schlagen.
Wenn man der Methode ein leeres Array übergibt wird der String auch an jedem Leerzeichen geteilt. Über den 2. Parameter kann man leere Teilstrings auch aussortieren.
Was ist, wenn die Wörter nicht durch Leerzeichen, sondern durch Satzzeichen (,.:;) getrennt sind? Gut, normalerweise macht man nach einem Komma oder Punkt ein Leerzeichen, aber die Ausnahmen bestätigen die Regel.
Wenn schon mit einer Regex, dann richtig:
w+
Auch w+ ist keine gute Lösung, wegen Umlauten und anderen Sonderzeichen in Namen und Fremdwörtern.
Ich denke dass [b]w+[/b] unter .NET sehr wohl funktioniert. Laut Dokumentation[1] ist im Standardfall nämlich jedes Zeichen aus den dort aufgeführten Unicode-Blöcken in der Gruppe enthalten. Lediglich im ECMA-Compliant-Modus verhält sich [b]w[/b] wie [b][a-zA-Z_0-9][/b].
[1] https://msdn.microsoft.com/en-us/library/20bw873z.aspx#WordCharacter