Delen via


Tekenreeksen scheiden met behulp van String.Split in C#

De String.Split methode maakt een matrix met subtekenreeksen door de invoertekenreeks te splitsen op basis van een of meer scheidingstekens. Deze methode is vaak de eenvoudigste manier om een tekenreeks op woordgrenzen te scheiden.

Notitie

De C#-voorbeelden in dit artikel worden uitgevoerd in de Try.NET inline code runner en omgeving. Selecteer de knop Uitvoeren om een voorbeeld uit te voeren in een interactief venster. Nadat u de code hebt uitgevoerd, kunt u deze wijzigen en de gewijzigde code uitvoeren door Opnieuw uitvoeren te selecteren. De gewijzigde code wordt uitgevoerd in het interactieve venster of, als de compilatie mislukt, worden alle C#-compilerfoutberichten weergegeven.

Advies

U kunt AI-hulp gebruiken om een tekenreeks te splitsen.

Een tekenreeks splitsen in woorden

Met de volgende code wordt een algemene woordgroep gesplitst in een matrix met tekenreeksen voor elk woord.

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

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

Elk exemplaar van een scheidingsteken produceert een waarde in de geretourneerde matrix. Omdat matrices in C# nul geïndexeerd zijn, wordt elke tekenreeks in de matrix geïndexeerd van 0 naar de waarde die wordt geretourneerd door de Array.Length eigenschap min 1:

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]}>");
}

De String.Split heeft veel overbelastingen. Deze overbelastingen passen het gedrag voor het splitsen van tekenreeksen aan:

  • U kunt scheidingstekens opgeven als char waarden of string waarden.
  • U kunt één scheidingsteken of meerdere scheidingstekens opgeven. Als u meerdere scheidingstekens opgeeft, moeten ze allemaal hetzelfde type zijn (of charstring).
  • U kunt het maximum aantal subtekenreeksen opgeven dat moet worden geretourneerd.
  • U kunt opgeven of herhaalde scheidingstekens worden genegeerd of lege subtekenreeksen in de retourwaarde worden geproduceerd.
  • U kunt aangeven of de witte ruimte aan het begin en het einde van de geretourneerde subtekenreeksen wordt verwijderd.

In de overige voorbeelden worden verschillende overbelastingen gebruikt om elk van deze gedragingen weer te geven.

Meerdere scheidingstekens opgeven

String.Split kan meerdere scheidingstekens gebruiken. In het volgende voorbeeld worden spaties, komma's, punten, dubbele punten en tabs gebruikt als scheidingstekens, die in een matrix worden doorgegeven Split . In de lus onder aan de code worden alle woorden in de geretourneerde matrix weergegeven.

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}>");
}

Opeenvolgende exemplaren van een scheidingsteken produceren de lege tekenreeks in de uitvoermatrix:

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 kan een matrix van tekenreeksen (tekenreeksen die fungeren als scheidingstekens voor het parseren van de doeltekenreeks, in plaats van enkele tekens) gebruiken.

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);
}

Uitvoergrootte beperken

In het volgende voorbeeld ziet u hoe u de uitvoer beperkt tot de eerste vier subtekenreeksen in de brontekenreeks.

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}>");
}

Lege subtekenreeksen verwijderen

Opeenvolgende scheidingstekens produceren de lege tekenreeks als een waarde in de geretourneerde matrix. In het volgende voorbeeld ziet u hoe een lege tekenreeks wordt gemaakt, waarbij het spatieteken als scheidingsteken wordt gebruikt.

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

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

Dit gedrag maakt het eenvoudiger voor indelingen zoals CSV-bestanden (door komma's gescheiden waarden) die tabelgegevens vertegenwoordigen. Opeenvolgende komma's vertegenwoordigen een lege kolom.

U kunt een optionele StringSplitOptions.RemoveEmptyEntries parameter doorgeven om lege tekenreeksen uit te sluiten in de geretourneerde matrix. Voor complexere verwerking van de geretourneerde verzameling kunt u LINQ gebruiken om de resultatenreeks te bewerken.

Witruimte knippen

In het volgende voorbeeld ziet u het effect van het bijsnijden van vermeldingen:

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}>");
}

De niet-opgehaalde vermeldingen hebben extra witruimte vóór de cijfers.

AI gebruiken om een tekenreeks te splitsen

U kunt AI-hulpprogramma's, zoals GitHub Copilot, gebruiken om code te genereren voor het splitsen van tekenreeksen met behulp van String.Split C#. U kunt de prompt aanpassen om tekenreeksen en scheidingstekens te gebruiken volgens uw vereisten.

In de volgende tekst ziet u een voorbeeldprompt voor 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 wordt mogelijk gemaakt door AI, dus verrassingen en fouten zijn mogelijk. Zie Veelgestelde vragen over Copilotvoor meer informatie.

Zie ook