Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
Anteckning
C#-exemplen i den här artikeln körs i Try.NET interaktiv kodmiljö 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.
Tips/Råd
Du kan använda AI-hjälp för att dela en sträng.
Dela upp en sträng i ord
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)
{
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++)
{
Console.WriteLine($"Index {i}: <{words[i]}>");
}
Har String.Split många överbelastningar. Dessa överbelastningar anpassar beteendet för att dela upp strängar.
- Du kan ange avgränsare som
char
värden ellerstring
värden. - Du kan ange en avgränsare eller flera avgränsare. Om du anger flera avgränsare måste alla vara av samma typ (antingen
char
ellerstring
). - Du kan ange det maximala antalet delsträngar som ska returneras.
- Du kan ange om upprepade avgränsartecken ignoreras eller generera tomma delsträngar i returvärdet.
- Du kan ange om inledande och avslutande blanksteg tas bort från de returnerade understrängarna.
De återstående exemplen använder olika överbelastningar för att visa varje av dessa beteenden.
Ange flera avgränsare
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";
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}>");
}
På varandra följande avgränsare resulterar i tomma strängar i utdatamatrisen.
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 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";
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);
}
Begränsa utdatastorlek
I följande exempel visas hur du begränsar utdata till de första fyra delsträngarna i källsträngen.
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}>");
}
Ta bort tomma delsträngar
Vid på varandra följande avgränsartecken genereras ett tomt strängvä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)
{
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.
Ta bort tomrum
I följande exempel visas effekten av trimning av poster:
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 otrimmade posterna har extra blanksteg före siffrorna.
Använd AI för att dela en sträng
Du kan använda AI-verktyg, till exempel GitHub Copilot, för att generera kod för att dela upp strängar med hjälp av String.Split
i C#. Du kan anpassa uppmaningen så att strängar och avgränsare används enligt dina behov.
Följande text visar en exempelfråga 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 drivs av AI, så överraskningar och misstag är möjliga. Mer information finns i Copilot FAQ.