Heim > Backend-Entwicklung > C++ > Wie kann ich effizient alle Vorkommen eines Teilstrings in einem C#-String finden?

Wie kann ich effizient alle Vorkommen eines Teilstrings in einem C#-String finden?

Susan Sarandon
Freigeben: 2025-01-01 12:36:10
Original
964 Leute haben es durchsucht

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

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

Mit dieser Erweiterungsmethode können Sie alle Vorkommen eines Teilstrings in einem String mithilfe der folgenden Syntax finden:

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

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

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

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!

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