Wie kann ich die Anzahl der Wiederholung von Zeichen in String in c# berechnen? Beispiel habe ich sasysays Anzahl der Wiederholung des Zeichens 's' ist 4
Antworten
Zu viele Anzeigen?Hier ist eine Version mit LINQ (geschrieben mit Erweiterungsmethoden):
int s = str.Where(c => c == 's').Count();
Dabei wird die Tatsache genutzt, dass string
ist IEnumerable<char>
So können wir alle Zeichen herausfiltern, die mit dem gesuchten Zeichen übereinstimmen, und dann die Anzahl der ausgewählten Elemente zählen. Tatsächlich können Sie genau das schreiben (weil die Count
Methode können Sie ein Prädikat angeben, das für alle gezählten Elemente gelten soll):
int s = str.Count(c => c == 's');
Eine andere Möglichkeit ist:
int numberOfS = str.Count('s'.Equals);
Das ist ein bisschen verkehrt - 's'
ist ein Zeichen, und jedes Zeichen hat eine Equals
Methode, die als Argument für Count
.
Natürlich ist dies weniger flexibel als c => c == 's'
- können Sie sie nicht einfach in eine komplexe Bedingung umwandeln.
Eine allgemeinere Lösung, bei der die Anzahl der Vorkommen aller Zeichen gezählt wird:
var charFrequencies = new Dictionary<char, int>();
foreach(char c in s)
{
int n;
charFrequencies.TryGetValue(c, out n);
n++;
charFrequencies[c] = n;
}
Console.WriteLine("There are {0} instances of 's' in the string", charFrequencies['s']);
- See previous answers
- Weitere Antworten anzeigen