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

Wie kann ich alle Vorkommen eines Teilstrings innerhalb eines größeren Strings in C# finden?

Barbara Streisand
Freigeben: 2024-12-28 22:52:15
Original
677 Leute haben es durchsucht

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

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

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

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

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!

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