Dela via


Så här separerar du strängar med String.Split i C#

Metoden String.Split skapar en matris med delsträngar genom att dela indatasträngen baserat på en eller flera avgränsare. Den här metoden är ofta det enklaste sättet att separera en sträng på ordgränser. Den används också för att dela upp strängar på andra specifika tecken eller strängar.

Kommentar

C#-exemplen i den här artikeln körs i Try.NET infogad kodlöpare och lekplats. Välj knappen Kör för att köra ett exempel i ett interaktivt fönster. När du har kört koden kan du ändra den och köra den ändrade koden genom att välja Kör igen. Den ändrade koden körs antingen i det interaktiva fönstret eller, om kompilering misslyckas, visar det interaktiva fönstret alla felmeddelanden för C#-kompilatorn.

String.Split-exempel

Följande kod delar upp en vanlig fras i en matris med strängar för varje ord.

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

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

Varje instans av ett avgränsartecken genererar ett värde i den returnerade matrisen. Eftersom matriser i C# är nollindexerade indexeras varje sträng i matrisen från 0 till värdet som returneras av Array.Length egenskapen minus 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]}>");
}

På varandra följande avgränsartecken skapas den tomma strängen som ett värde i den returnerade matrisen. Du kan se hur en tom sträng skapas i följande exempel, som använder blankstegstecknet som avgränsare.

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

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

Det här beteendet gör det enklare för format som kommaavgränsade värden (CSV)-filer som representerar tabelldata. På varandra följande kommatecken representerar en tom kolumn.

Du kan skicka en valfri StringSplitOptions.RemoveEmptyEntries parameter för att exkludera tomma strängar i den returnerade matrisen. För mer komplicerad bearbetning av den returnerade samlingen kan du använda LINQ för att ändra resultatsekvensen.

String.Split kan använda flera avgränsartecken. I följande exempel används blanksteg, kommatecken, punkter, kolon och flikar som avgränsande tecken som skickas till Split i en matris. Loopen längst ned i koden visar vart och ett av orden i den returnerade matrisen.

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

På varandra följande instanser av en avgränsare skapas den tomma strängen i utdatamatrisen:

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 ta en matris med strängar (teckensekvenser som fungerar som avgränsare för parsning av målsträngen i stället för enskilda tecken).

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

Använd GitHub Copilot för att dela en sträng

Du kan använda GitHub Copilot i din IDE för att generera kod för att dela strängar med hjälp av String.Split i C#.

Om du använder Visual Studio 2022 version 17.8 eller senare kan du prova den AI-drivna GitHub Copilot i Visual Studio för att generera kod för att dela upp en indatasträng i delsträngar baserat på en eller flera avgränsare. Skicka din fråga som en uppmaning i Chattfönstret för Copilot, som i följande exempel. Du kan också skicka frågor med hjälp av infogad chatt i själva redigeringsfönstret.

Kommentar

GitHub Copilot drivs av AI, så överraskningar och misstag är möjliga. Kontrollera eventuell genererad kod eller förslag. Mer information om allmän användning av GitHub Copilot, produktpåverkan, mänsklig tillsyn och sekretess finns i Vanliga frågor och svar om GitHub Copilot.

Följande text visar en exempelfråga för Copilot Chat:

Generera C#-kod för att använda Split.String och dela upp en sträng i delsträngar. Indatasträngen är "Du vinner lite. Du förlorar lite." Avgränsare är utrymme och punkt. Ange exempelutdata.

Du kan anpassa uppmaningen så att strängar och avgränsare används enligt dina behov.

Du kan använda chattfunktioner, till exempel snedstreckskommandon, referenser till filer, metoder eller klasser och trådar, för att ange avsikt och få bättre svar med begränsad kontext. För en befintlig fil som är öppen i IDE kan du uppmana GitHub Copilot att använda infogad chatt med /generate code to split string1 in #Filename by delimiter spaces.

Följande utdata visar ett exempel på Copilot Chat-svar:

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

När Copilot returnerar ett kodblock innehåller svaret alternativ för att kopiera koden, infoga koden i en ny fil eller förhandsgranska kodutdata.

Kommentar

Dina resultat kan skilja sig från vad som visas i exempelsvaren. AI-modeller är icke-deterministiska, vilket innebär att de kan returnera olika svar när de får samma fråga. Detta kan bero på ytterligare inlärning och anpassning över tid, språkvariationer, ändringar i kontexten, till exempel din chatthistorik med mera.

Skärmbild som visar hur du använder GitHub Copilot Chat i Visual Studio för att dela upp en sträng i understrängar.

Mer information finns i:

Se även