Udostępnij za pośrednictwem


Jak oddzielić ciągi przy użyciu metody String.Split w języku C#

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 oddzielenia ciągu od granic słów. Służy również do dzielenia ciągów na inne określone znaki lub ciągi.

Uwaga

Przykłady języka C# w tym artykule są uruchamiane w Try.NET wbudowanym modułem uruchamiającym kod i placem zabaw. 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#.

Przykłady string.Split

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)
{
    System.Console.WriteLine($"<{word}>");
}

Każde wystąpienie znaku separatora generuje wartość w zwracanej tablicy. Ponieważ tablice w języku C# są indeksowane zero, każdy ciąg w tablicy jest indeksowany z zakresu od 0 do wartości zwracanej przez Array.Length właściwość 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]}>");
}

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)
{
    System.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.

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

Kolejne wystąpienia dowolnego separatora generują pusty ciąg w tablicy wyjściowej:

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

Dzielenie ciągu za pomocą narzędzia GitHub Copilot

Możesz użyć narzędzia GitHub Copilot w środowisku IDE, aby wygenerować kod do dzielenia ciągów przy użyciu języka String.Split C#.

Jeśli używasz programu Visual Studio 2022 w wersji 17.8 lub nowszej, możesz wypróbować oparty na sztucznej inteligencji narzędzie GitHub Copilot w programie Visual Studio , aby wygenerować kod, aby podzielić ciąg wejściowy na podciągi na podstawie co najmniej jednego ogranicznika. Prześlij swoje pytanie jako monit w oknie czatu Copilot, jak w poniższym przykładzie. Możesz również przesyłać monity przy użyciu wbudowanego czatu w samym oknie edytora.

Uwaga

Narzędzie GitHub Copilot jest obsługiwane przez sztuczną inteligencję, więc możliwe są niespodzianki i błędy. Upewnij się, że zweryfikowano wygenerowany kod lub sugestie. Aby uzyskać więcej informacji na temat ogólnego użycia narzędzia GitHub Copilot, wpływu produktu, nadzoru ludzkiego i prywatności, zobacz GitHub Copilot — często zadawane pytania.

Poniższy tekst przedstawia przykładowy monit dotyczący czatu copilot:

Wygeneruj kod w języku C#, aby użyć ciągu Split.String podzielonego na podciąg. Ciąg wejściowy to "Wygrywasz niektóre. Tracisz trochę." Ograniczniki to spacja i kropka. Podaj przykładowe dane wyjściowe.

Możesz dostosować monit, aby używać ciągów i ograniczników zgodnie z wymaganiami.

Możesz użyć funkcji czatu, takich jak polecenia ukośnika, odwołania do plików, metod lub klas i wątków, aby ustawić intencję i uzyskać lepsze odpowiedzi z kontekstem o określonym zakresie. W przypadku istniejącego pliku, który jest otwarty w środowisku IDE, możesz wyświetlić monit w witrynie GitHub Copilot przy użyciu wbudowanego czatu z usługą /generate code to split string1 in #Filename by delimiter spaces.

W poniższych danych wyjściowych przedstawiono przykładową odpowiedź czatu copilot:

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

Gdy copilot zwraca blok kodu, odpowiedź zawiera opcje kopiowania kodu, wstawiania kodu do nowego pliku lub podglądu danych wyjściowych kodu.

Uwaga

Wyniki mogą się różnić od przedstawionych w przykładowych odpowiedziach. Modele sztucznej inteligencji są niedeterministyczne, co oznacza, że mogą zwracać różne odpowiedzi po zadawaniu tego samego pytania. Może to być spowodowane dodatkowym uczeniem się i adaptacją w czasie, odmianą języka, zmianami w kontekście, takimi jak historia czatów i nie tylko.

Zrzut ekranu przedstawiający użycie funkcji Czat copilot w usłudze GitHub w programie Visual Studio w celu podzielenia ciągu na podciągi.

Aby uzyskać więcej informacji, zobacz:

Zobacz też