Jak oddělit řetězce pomocí String.Split v jazyce C#
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 často nejjednodušší způsob, jak oddělit řetězec na hranicích slova. Používá se také k rozdělení řetězců na jiné konkrétní znaky nebo řetězce.
Poznámka:
Příklady jazyka C# v tomto článku se spouštějí v Try.NET inline code runner a playground. 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#.
String.Split – příklady
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)
{
System.Console.WriteLine($"<{word}>");
}
Každá instance znaku oddělovače vytvoří hodnotu ve vrácené matici. 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++)
{
System.Console.WriteLine($"Index {i}: <{words[i]}>");
}
Po sobě jdoucí oddělovač 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)
{
System.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ů.
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";
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}>");
}
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";
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 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";
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);
}
Rozdělení řetězce pomocí GitHub Copilotu
Pomocí GitHub Copilotu v integrovaném vývojovém prostředí můžete vygenerovat kód pro rozdělení řetězců pomocí jazyka String.Split
C#.
Pokud používáte Visual Studio 2022 verze 17.8 nebo novější, můžete vyzkoušet GitHub Copilot řízený AI v sadě Visual Studio a vygenerovat kód, který rozdělí vstupní řetězec na podřetězce založené na jednom nebo několika oddělovači. Odešlete otázku jako výzvu v okně chatu Copilot, jak je znázorněno v následujícím příkladu. Můžete také odesílat výzvy pomocí vloženého chatu v samotném okně editoru.
Poznámka:
GitHub Copilot využívá technologii AI, takže jsou možná překvapení a chyby. Nezapomeňte ověřit vygenerovaný kód nebo návrhy. Další informace o obecném použití GitHub Copilotu, dopadu produktu, lidského dohledu a ochrany osobních údajů najdete v nejčastějších dotazech ke Kopírování GitHubu.
Následující text ukazuje příklad výzvy ke kopírování chatu:
Vygenerujte kód jazyka C#, který použije split.String řetězec na podřetězce. Vstupní řetězec je "Vyhrajete nějaké. Přijdeš o něco." Oddělovače jsou mezera a tečka. Zadejte příklad výstupu.
Výzvu můžete přizpůsobit tak, aby používala řetězce a oddělovače podle vašich požadavků.
Pomocí funkcí chatu, jako jsou příkazy lomítka, odkazy na soubory, metody nebo třídy a vlákna, můžete nastavit záměr a získat lepší odpovědi s vymezeným kontextem. U existujícího souboru, který je otevřený v integrovaném vývojovém prostředí, můžete pomocí vloženého chatu /generate code to split string1 in #Filename by delimiter spaces
zobrazit příkaz GitHub Copilot .
Následující výstup ukazuje příklad odpovědi copilot chatu:
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
Když Copilot vrátí blok kódu, odpověď obsahuje možnosti pro zkopírování kódu, vložení kódu do nového souboru nebo náhled výstupu kódu.
Poznámka:
Výsledky se můžou lišit od toho, co se zobrazuje v ukázkových odpovědích. Modely AI nejsou deterministické, což znamená, že při kladení stejné otázky můžou vrátit různé odpovědi. Důvodem může být další učení a přizpůsobení v průběhu času, jazykové variace, změny v kontextu, například historie chatu a další.
Další informace naleznete v tématu: