Alle Teilstring-Positionen in einem größeren String in C# finden
Bei der Arbeit mit großen Strings kann das Auffinden aller Instanzen eines bestimmten Teilstrings von entscheidender Bedeutung sein zum Parsen und zur Datenanalyse. In diesem Artikel geht es um die Herausforderung, alle derartigen Instanzen zu finden und ihre Indizes in einer Liste zu speichern.
Problemstellung
Sie haben eine große Zeichenfolge, die Sie analysieren müssen. Innerhalb dieser Zeichenfolge müssen Sie die Positionen jedes Vorkommens einer bestimmten Teilzeichenfolge identifizieren und speichern. Nehmen wir an, die Beispielzeichenfolge ist „extract“(me,i-have lots. of)punctuation.“ Sie möchten alle Vorkommen dieser Teilzeichenfolge innerhalb der größeren Zeichenfolge finden und ihre Indizes zu einer Liste hinzufügen.
Auflösung
Methode 1:
Die IndexOf-Methode in C# kann verwendet werden, um das erste Vorkommen von a zu lokalisieren Um jedoch alle Vorkommen zu finden, müssen wir eine Schleife verwenden, um die Zeichenfolge zu durchlaufen und mit der Suche fortzufahren, bis keine weiteren Instanzen gefunden werden.
Diese Technik kann durch die Verwendung einer Erweiterungsmethode zum Erstellen des Codes verbessert werden Prägnanter. Hier ist ein Beispiel für eine Erweiterungsmethode:
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); } }
Methode 2:
Alternativ kann auch ein Iterator verwendet werden um die Indizes sequentiell zu erhalten:
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; } }
Beide Methoden können einfach zu jedem String-Objekt hinzugefügt werden, wodurch es praktisch ist, alle Teilstring-Positionen zu finden. Beispielsweise würde die folgende Zeile alle Vorkommen des Teilstrings „foo“ finden " innerhalb der Zeichenfolge „fooStringfooBar“:
List<int> indexes = "fooStringfooBar".AllIndexesOf("foo");
Das obige ist der detaillierte Inhalt vonWie kann ich alle Vorkommen eines Teilstrings innerhalb eines größeren Strings in C# finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!