Alle Positionen eines Teilstrings innerhalb eines größeren Strings in C# finden
Problem:
Bei einer großen Zeichenfolge müssen Sie die Positionen aller Vorkommen einer angegebenen Teilzeichenfolge innerhalb dieser Zeichenfolge identifizieren und speichern. Wenn die Teilzeichenfolge beispielsweise „extract“(me,i-have lots. of) ist, erscheint am Anfang und in der Mitte der größeren Zeichenfolge eine Zeichensetzung. Beide Instanzen sollten gefunden und ihre Indexpositionen zu einer Liste hinzugefügt werden, was zu einem führt Liste mit 0 und dem Index des mittleren Vorkommens.
Lösung:
Der bereitgestellte Code verwendet die IndexOf-Methode, die zum Auffinden verwendet werden kann Das erste Vorkommen einer Teilzeichenfolge innerhalb einer Zeichenfolge gibt jedoch nur die erste Übereinstimmung zurück. Um alle Vorkommen zu finden, kann eine Schleife verwendet werden, um ab der Position nach der vorherigen Übereinstimmung wiederholt aufzurufen Indexpositionen können dann zur gewünschten Liste hinzugefügt werden.
Hier ist eine korrigierte Version des bereitgestellten Codes:
List<int> inst = new List<int>(); int index = 0; while (index < source.Length) { int src = source.IndexOf("extract\"(me,i-have lots. of]punctuation", index); if (src == -1) break; // No more occurrences found inst.Add(src); index = src + 40; // Advance the search index to beyond the current match }
Alternative Ansätze:
Eine weitere Lösung besteht in der Verwendung einer Erweiterungsmethode für mehr Komfort. Hier ist eine Beispielerweiterungsmethode, die das Iteratormuster nutzt:
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 dieser Erweiterungsmethode können Sie ganz einfach Finden Sie alle Vorkommen eines Teilstrings wie folgt:
List<int> indexes = "fooStringfooBar".AllIndexesOf("foo");
Das obige ist der detaillierte Inhalt vonWie kann ich alle Vorkommen eines Teilstrings innerhalb eines Strings in C# finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!