Alle Positionen eines Teilstrings in einem größeren String in C# finden
Das Finden des Vorkommens eines Teilstrings innerhalb eines größeren Strings ist eine häufige Programmieraufgabe. In C# bietet die Methode string.IndexOf() eine bequeme Möglichkeit, das erste Vorkommen eines Teilstrings zu finden, aber sie bietet keine direkte Möglichkeit, alle Vorkommen zu finden.
Um alle Vorkommen eines Teilstrings zu finden, Sie können eine Schleife verwenden, die den größeren String durchläuft, während Sie die Methode string.IndexOf() verwenden, um jedes Vorkommen zu lokalisieren. Dieser Ansatz kann jedoch ineffizient sein, wenn die größere Zeichenfolge groß ist und die Teilzeichenfolge mehrmals gefunden wird.
Ein effizienterer Ansatz ist die Verwendung einer Erweiterungsmethode, mit der Sie benutzerdefinierte Methoden zu vorhandenen Klassen hinzufügen können. Hier ist ein Beispiel für eine Erweiterungsmethode, die alle Vorkommen eines Teilstrings in einem String findet:
public static List<int> AllIndexesOf(this string str, string value) { if (String.IsNullOrEmpty(value)) throw new ArgumentException("the string to find may not be empty", "value"); List<int> indexes = new List<int>(); for (int index = 0;; index += value.Length) { index = str.IndexOf(value, index); if (index == -1) return indexes; indexes.Add(index); } }
Mit dieser Erweiterungsmethode können Sie alle Vorkommen eines Teilstrings in einem String mithilfe der folgenden Syntax finden:
List<int> indexes = "fooStringfooBar".AllIndexesOf("foo");
Alternativ können Sie auch einen Iterator verwenden, um alle Vorkommen von a zu finden Teilzeichenfolge:
public static IEnumerable<int> AllIndexesOf(this string str, string value) { if (String.IsNullOrEmpty(value)) throw new ArgumentException("the string to find may not be empty", "value"); for (int index = 0;; index += value.Length) { index = str.IndexOf(value, index); if (index == -1) break; yield return index; } }
Mit diesem Iterator können Sie die Vorkommen der Teilzeichenfolge mithilfe der foreach-Anweisung durchlaufen:
foreach (int index in "fooStringfooBar".AllIndexesOf("foo")) { // do something with the index }
Das obige ist der detaillierte Inhalt vonWie kann ich effizient alle Vorkommen eines Teilstrings in einem C#-String finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!