Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Metoda String.Split tworzy tablicę podciągów, dzieląc ciąg wejściowy na podstawie co najmniej jednego ogranicznika. Ta metoda jest często najprostszym sposobem podziału ciągu na granicach słów.
Uwaga
Przykłady języka C# w tym artykule są uruchamiane w wbudowanym środowisku Try.NET do uruchamiania kodu i eksploracji. Wybierz przycisk Uruchom, aby uruchomić przykład w oknie interaktywnym. Po wykonaniu kodu można go zmodyfikować i uruchomić zmodyfikowany kod, wybierając pozycję Uruchom ponownie. Zmodyfikowany kod jest uruchamiany w oknie interaktywnym lub, jeśli kompilacja zakończy się niepowodzeniem, w oknie interaktywnym zostaną wyświetlone wszystkie komunikaty o błędach kompilatora języka C#.
Wskazówka
Aby podzielić ciąg, możesz skorzystać z pomocy AI.
Dzielenie ciągu na wyrazy
Poniższy kod dzieli wspólną frazę na tablicę ciągów dla każdego wyrazu.
string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');
foreach (var word in words)
{
Console.WriteLine($"<{word}>");
}
Każde wystąpienie znaku separatora generuje wartość w zwracanej tablicy. Ponieważ tablice w języku C# są indeksowane od zera, każdy ciąg w tablicy jest indeksowany od 0 do wartości zwracanej przez właściwość Array.Length 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]}>");
}
Element String.Split ma wiele przeciążeń. Te przeciążenia umożliwiają dostosowanie zachowania w przypadku dzielenia ciągów:
- Można określić separatory jako wartości
char
lubstring
. - Można określić jeden separator lub wiele separatorów. Jeśli określisz wiele separatorów, wszystkie muszą być tego samego typu (
char
lubstring
). - Można określić maksymalną liczbę zwracanych podciągów.
- Można określić, czy powtarzające się znaki separatora są ignorowane, lub generować puste podciągy w wartości zwracanej.
- Można określić, czy białe znaki wiodące i końcowe są usuwane ze zwracanych podłańcuchów.
W pozostałych przykładach użyto różnych przeciążeń, aby pokazać każde z tych zachowań.
Określanie wielu separatorów
String.Split może używać wielu znaków separatora. W poniższym przykładzie użyto spacji, przecinków, kropek, dwukropków i tabulatorów jako znaków oddzielających, które są przekazywane do Split w tablicy. Pętla w dolnej części kodu wyświetla każdy wyraz w zwróconej tablicy.
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}>");
}
Kolejne wystąpienia dowolnego separatora generują pusty ciąg w tablicy wyjściowej:
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 może przyjmować tablicę ciągów (sekwencje znaków, które działają jako separatory do analizowania ciągu docelowego, zamiast pojedynczych znaków).
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);
}
Ogranicz rozmiar danych wyjściowych
W poniższym przykładzie pokazano, jak ograniczyć dane wyjściowe do pierwszych czterech podciągów w ciągu źródłowym.
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}>");
}
Usuwanie pustych podciągów
Kolejne znaki separatora generują pusty ciąg jako wartość w zwracanej tablicy. W poniższym przykładzie pokazano, jak jest tworzony pusty ciąg, który używa znaku spacji jako separatora.
string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');
foreach (var word in words)
{
Console.WriteLine($"<{word}>");
}
To zachowanie ułatwia formaty, takie jak pliki wartości rozdzielane przecinkami (CSV) reprezentujące dane tabelaryczne. Kolejne przecinki reprezentują pustą kolumnę.
Możesz przekazać opcjonalny StringSplitOptions.RemoveEmptyEntries parametr, aby wykluczyć wszystkie puste ciągi w zwróconej tablicy. W przypadku bardziej skomplikowanego przetwarzania zwróconej kolekcji można użyć LINQ do manipulowania sekwencją wyników.
Usuń białe znaki
W poniższym przykładzie pokazano efekt przycinania wpisów:
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}>");
}
Nieprzycięte wpisy mają dodatkowe odstępy przed liczbami.
Dzielenie ciągu za pomocą sztucznej inteligencji
Narzędzia sztucznej inteligencji, takie jak GitHub Copilot, umożliwiają generowanie kodu do dzielenia ciągów przy użyciu języka String.Split
C#. Możesz dostosować monit, aby używać ciągów i ograniczników zgodnie z wymaganiami.
Poniższy tekst przedstawia przykładowy monit dotyczący czatu copilot:
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.
Narzędzie GitHub Copilot jest obsługiwane przez sztuczną inteligencję, więc możliwe są niespodzianki i błędy. Aby uzyskać więcej informacji, zobacz Copilot FAQs.