Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Metoda String.Split vytvoří pole podřetězců rozdělením vstupního řetězce na základě jednoho nebo více oddělovačů. Tato metoda je nejjednodušší způsob, jak často oddělit řetězec podle hranic slov.
Poznámka:
Příklady jazyka C# v článku se spouštějí v Try.NET, prostřednictvím inline code runneru a playgroundu. Vyberte tlačítko Spustit a spusťte příklad v interaktivním okně. Jakmile kód spustíte, můžete ho upravit a spustit upravený kód tak , že znovu vyberete Spustit . Upravený kód se buď spustí v interaktivním okně, nebo pokud kompilace selže, zobrazí se v interaktivním okně všechny chybové zprávy kompilátoru jazyka C#.
Návod
Pomoc s AI můžete použít k rozdělení řetězce.
Rozdělení řetězce na slova
Následující kód rozdělí společnou frázi na pole řetězců pro každé slovo.
string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');
foreach (var word in words)
{
Console.WriteLine($"<{word}>");
}
Každá instance znaku oddělovače vytvoří hodnotu ve vráceném poli. Vzhledem k tomu, že pole v jazyce C# jsou indexována nulou, každý řetězec v poli je indexován od 0 do hodnoty vrácené Array.Length vlastností 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]}>");
}
String.Split má mnoho přetížených funkcí. Tato přetížení přizpůsobují chování pro rozdělení řetězců:
- Oddělovače můžete zadat jako
char
hodnoty nebostring
hodnoty. - Můžete zadat jeden oddělovač nebo více oddělovačů. Pokud zadáte více oddělovačů, musí být všechny stejný typ (buď
char
nebostring
). - Můžete zadat maximální počet dílčích řetězců, které se mají vrátit.
- Můžete určit, zda jsou opakované oddělovače ignorovány, nebo zda se mají generovat prázdné podřetězce ve vrácené hodnotě.
- Můžete určit, jestli se z vrácených podřetězců odeberou úvodní a koncové prázdné znaky.
Zbývající příklady používají různá přetížení k zobrazení každého z těchto chování.
Zadání více oddělovačů
String.Split může používat více znaků oddělovače. Následující příklad používá mezery, čárky, tečky, dvojtečky a tabulátory jako oddělovače znaků, které se předávají Split v poli. Smyčka v dolní části kódu zobrazí všechna slova ve vráceném poli.
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}>");
}
Po sobě jdoucí instance libovolného oddělovače vytvoří prázdný řetězec ve výstupním poli:
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 může vzít pole řetězců (sekvence znaků, které fungují jako oddělovače pro analýzu cílového řetězce místo jednoduchých znaků).
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);
}
Omezení velikosti výstupu
Následující příklad ukazuje, jak omezit výstup na první čtyři podřetězce ve zdrojovém řetězci.
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}>");
}
Odeberte prázdné podřetězce
Po sobě jdoucí oddělovače vytvoří prázdný řetězec jako hodnotu ve vráceném poli. V následujícím příkladu můžete vidět, jak se vytvoří prázdný řetězec, který jako oddělovač používá znak mezery.
string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');
foreach (var word in words)
{
Console.WriteLine($"<{word}>");
}
Toto chování usnadňuje formáty, jako jsou soubory hodnot oddělených čárkami (CSV), které představují tabulková data. Po sobě jdoucí čárky představují prázdný sloupec.
Můžete předat volitelný StringSplitOptions.RemoveEmptyEntries parametr, který vyloučí všechny prázdné řetězce ve vráceném poli. Pro složitější zpracování vrácené kolekce můžete pomocí LINQ manipulovat s posloupností výsledků.
Oříznout prázdné znaky
Následující příklad ukazuje účinek oříznutí položek:
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}>");
}
Neupravené položky mají před číslicemi přebytečné mezery.
Rozdělení řetězce pomocí AI
Pomocí nástrojů AI, jako je GitHub Copilot, můžete vygenerovat kód pro rozdělení řetězců pomocí jazyka String.Split
C#. Výzvu můžete přizpůsobit tak, aby používala řetězce a oddělovače podle vašich požadavků.
Následující text ukazuje příklad výzvy pro 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 využívá technologii AI, takže jsou možná překvapení a chyby. Další informace najdete v nejčastějších dotazech ke copilotu.