Freigeben über


Teilen von Zeichenfolgen mithilfe von String.Split in C#

Die String.Split-Methode erstellt ein Array mit Teilzeichenfolgen, indem die Eingabezeichenfolge von mindestens einem Trennzeichen geteilt wird. Sie stellt in der Regel die einfachste Möglichkeit dar, eine Zeichenfolge an Wortgrenzen zu teilen.

Hinweis

Die C#-Beispiele in diesem Artikel werden in der Inlinecodeausführung und dem Playground von Try.NET ausgeführt. Klicken Sie auf die Schaltfläche Ausführen, um ein Beispiel in einem interaktiven Fenster auszuführen. Nachdem Sie den Code ausgeführt haben, können Sie ihn ändern und den geänderten Code durch erneutes Anklicken der Schaltfläche Ausführen ausführen. Der geänderte Code wird entweder im interaktiven Fenster ausgeführt, oder das interaktive Fenster zeigt alle C#-Compilerfehlermeldungen an, wenn die Kompilierung fehlschlägt.

Tipp

Sie können KI-Unterstützung verwenden, um eine Zeichenfolge aufzuteilen.

Aufteilen einer Zeichenfolge in Wörter

Mithilfe des folgenden Codes wird ein häufig verwendeter Ausdruck in ein Array mit Zeichenfolgen für jedes Wort unterteilt.

string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');

foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

Jede Instanz eines Trennzeichens gibt einen Wert in dem zurückgegebenen Array zurück. Da Arrays in C# nullindiziert sind, wird jede Zeichenfolge im Array von 0 bis zum von der Array.Length Eigenschaft zurückgegebenen Wert minus 1 indiziert:

string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');

for (int i = 0; i < words.Length; i++)
{
    Console.WriteLine($"Index {i}: <{words[i]}>");
}

Das String.Split hat viele Überladungen. Diese Überladungen passen das Verhalten für das Teilen von Zeichenfolgen an:

  • Sie können Trennzeichen als char Werte oder string Werte angeben.
  • Sie können ein Trennzeichen oder mehrere Trennzeichen angeben. Wenn Sie mehrere Trennzeichen angeben, müssen sie alle denselben Typ aufweisen (entweder char oder string).
  • Sie können die maximale Anzahl der zurückzugebenden Teilzeichenfolgen angeben.
  • Sie können angeben, ob wiederholte Trennzeichen ignoriert werden, oder leere Teilzeichenfolgen im Rückgabewert erzeugen.
  • Sie können angeben, ob führende und nachfolgende Leerzeichen aus den zurückgegebenen Teilzeichenfolgen entfernt werden.

In den verbleibenden Beispielen werden verschiedene Überladungen verwendet, um jedes dieser Verhaltensweisen darzustellen.

Weitere Informationen zu Indizes finden Sie im Artikel " Erkunden von Indizes und Bereichen" .

Angeben mehrerer Trennzeichen

String.Split kann mehrere Trennzeichen verwenden. In diesem Beispiel werden Leerräume, Kommas, Punkte, Doppelpunkte und Tabstopps verwendet, die in einem Array an Split übergeben werden. Die Schleife am Ende des Codes zeigt sämtliche Wörter im zurückgegeben Array an.

char[] delimiterChars = [' ', ',', '.', ':', '\t'];

string text = "one\ttwo three:four,five six seven";
Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(delimiterChars);
Console.WriteLine($"{words.Length} words in text:");

foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

Aufeinander folgende Instanzen einer beliebigen Trennlinie geben die leere Zeichenfolge im Ausgabearray zurück:

char[] delimiterChars = [' ', ',', '.', ':', '\t'];

string text = "one\ttwo :,five six seven";
Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(delimiterChars);
Console.WriteLine($"{words.Length} words in text:");

foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

String.Split kann ein Array mit Zeichenfolgen aufnehmen (Zeichenfolgen, die als Trennzeichen für die Analyse der Zielzeichenfolge fungieren, statt einzelne Zeichen).

string[] separatingStrings = ["<<", "..."];

string text = "one<<two......three<four";
Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(separatingStrings, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine($"{words.Length} substrings in text:");

foreach (var word in words)
{
    Console.WriteLine(word);
}

Beschränken der Ausgabegröße

Das folgende Beispiel zeigt, wie die Ausgabe auf die ersten vier Teilzeichenfolgen in der Quellzeichenfolge beschränkt wird.

string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ', 4, StringSplitOptions.None);

foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

Entfernen leerer Teilzeichenfolgen

Aufeinander folgende Trennzeichen geben eine leere Zeichenfolge als Wert in einem zurückgegebenen Array zurück. Im folgenden Beispiel sehen Sie, wie ein leere Zeichenfolge erstellt wird. Hier wird das Leerzeichen als Trennzeichen verwendet.

string phrase = "The quick brown    fox     jumps over the lazy dog.";
string[] words = phrase.Split(' ');

foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

Dieses Verhalten vereinfacht den Vorgang für Formate wie CSV (Comma Separated Values, durch Trennzeichen getrennte Werte), die Tabellendaten darstellen. Aufeinander folgende Kommas stellen eine leere Spalte dar.

Sie können einen optionalen StringSplitOptions.RemoveEmptyEntries-Parameter übergeben, um jegliche leeren Zeichenfolgen aus dem zurückgegebenen Array auszuschließen. Für kompliziertere Prozesse der zurückgegebenen Auflistung können Sie LINQ verwenden, um die Ergebnissequenz zu manipulieren.

Kürzen von Leerzeichen

Das folgende Beispiel zeigt den Effekt des Kürzens von Einträgen:

string numerals = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10";
string[] words = numerals.Split(',', StringSplitOptions.TrimEntries);

Console.WriteLine("Trimmed entries:");
foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}
words = numerals.Split(',', StringSplitOptions.None);
Console.WriteLine("Untrimmed entries:");
foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

Die ungetrimmten Einträge weisen vor den Ziffern zusätzliche Leerzeichen auf.

Verwenden von KI zum Teilen einer Zeichenfolge

Sie können KI-Tools wie GitHub Copilot verwenden, um Code zu generieren, um Zeichenfolgen mithilfe von String.Split C# aufzuteilen. Sie können die Eingabeaufforderung so anpassen, dass Zeichenfolgen und Trennzeichen gemäß Ihren Anforderungen verwendet werden.

Der folgende Text zeigt eine Beispielaufforderung für Copilot Chat:

Generate C# code to use Split.String to split a string into substrings.
Input string is "You win some. You lose some." Delimiters are space and period.
Provide example output.

GitHub Copilot wird von KI unterstützt. Daher sind Überraschungen und Fehler möglich. Weitere Informationen finden Sie unter Copilot-FAQs.

Siehe auch