Heim > Backend-Entwicklung > C++ > Wie kann ich alle Vorkommen eines Teilstrings innerhalb eines Strings in C# finden?

Wie kann ich alle Vorkommen eines Teilstrings innerhalb eines Strings in C# finden?

Susan Sarandon
Freigeben: 2024-12-30 01:59:08
Original
390 Leute haben es durchsucht

How Can I Find All Occurrences of a Substring Within a String in C#?

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
}
Nach dem Login kopieren

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;
    }
}
Nach dem Login kopieren

Mit dieser Erweiterungsmethode können Sie ganz einfach Finden Sie alle Vorkommen eines Teilstrings wie folgt:

List<int> indexes = "fooStringfooBar".AllIndexesOf("foo");
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage