Share 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. Het wordt ook gebruikt om tekenreeksen te splitsen op andere specifieke tekens of tekenreeksen.

Notitie

De C#-voorbeelden in dit artikel worden uitgevoerd in de Try.NET inline coderunner en playground. 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.

Voorbeelden van String.Split

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)
{
    System.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++)
{
    System.Console.WriteLine($"Index {i}: <{words[i]}>");
}

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)
{
    System.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.

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";
System.Console.WriteLine($"Original text: '{text}'");

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

foreach (var word in words)
{
    System.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";
System.Console.WriteLine($"Original text: '{text}'");

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

foreach (var word in words)
{
    System.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";
System.Console.WriteLine($"Original text: '{text}'");

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

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

GitHub Copilot gebruiken om een tekenreeks te splitsen

U kunt GitHub Copilot in uw IDE gebruiken om code te genereren voor het splitsen van tekenreeksen met behulp van String.Split C#.

Als u Visual Studio 2022 versie 17.8 of hoger gebruikt, kunt u de AI-gestuurde GitHub Copilot in Visual Studio proberen om code te genereren om een invoertekenreeks te splitsen in subtekenreeksen op basis van een of meer scheidingstekens. Dien uw vraag in als prompt in het Copilot-chatvenster, zoals in het volgende voorbeeld. U kunt ook prompts verzenden via inlinechat in het editorvenster zelf.

Notitie

GitHub Copilot wordt mogelijk gemaakt door AI, dus verrassingen en fouten zijn mogelijk. Zorg ervoor dat u alle gegenereerde code of suggesties controleert. Zie de veelgestelde vragen over GitHub Copilot voor meer informatie over het algemene gebruik van GitHub Copilot, productimpact, menselijk toezicht en privacy.

In de volgende tekst ziet u een voorbeeldprompt voor Copilot Chat:

C#-code genereren voor het gebruik van Split.String splitst een tekenreeks in subtekenreeksen. Invoertekenreeks is 'U wint een aantal. Je verliest wat." Scheidingstekens zijn spatie en punt. Geef voorbeelduitvoer op.

U kunt de prompt aanpassen om tekenreeksen en scheidingstekens te gebruiken volgens uw vereisten.

U kunt chatfuncties, zoals slash-opdrachten, verwijzingen naar bestanden, methoden of klassen en threads, gebruiken om intenties in te stellen en betere antwoorden te krijgen met contextbereik. Voor een bestaand bestand dat is geopend in de IDE, kunt u GitHub Copilot vragen met behulp van inline-chat met /generate code to split string1 in #Filename by delimiter spaces.

In de volgende uitvoer ziet u een voorbeeld van een Copilot Chat-antwoord:

Here is an example of how you can use the Split method in C# to split the string "You win some. You lose some." using space and period as delimiters:

using System;

class Program
{
    static void Main()
    {
        string input = "You win some. You lose some.";
        char[] delimiters = new char[] { ' ', '.' };
        string[] substrings = input.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);

        foreach (string substring in substrings)
        {
            Console.WriteLine(substring);
        }
    }
}

**Example Output**
You
win
some
You
lose
some

Wanneer Copilot een codeblok retourneert, bevat het antwoord opties voor het kopiëren van de code, het invoegen van de code in een nieuw bestand of het bekijken van de code-uitvoer.

Notitie

Uw resultaten kunnen afwijken van wat wordt weergegeven in de voorbeeldantwoorden. AI-modellen zijn niet-deterministisch, wat betekent dat ze verschillende antwoorden kunnen retourneren wanneer ze dezelfde vraag stellen. Dit kan worden veroorzaakt door extra leer- en aanpassing in de loop van de tijd, taalvariatie, wijzigingen in context, zoals uw chatgeschiedenis en meer.

Schermopname van het gebruik van GitHub Copilot Chat in Visual Studio om een tekenreeks te splitsen in subtekenreeksen.

Zie voor meer informatie:

Zie ook