Como: Analisar cadeias de caracteres usando String.Split (Guia de C#)How to: Parse Strings Using String.Split (C# Guide)

O método String.Split cria uma matriz de subcadeias, dividindo a cadeia de caracteres de entrada com base em um ou mais delimitadores.The String.Split method creates an array of substrings by splitting the input string based on one or more delimiters. Geralmente essa é a maneira mais fácil de separar uma cadeia de caracteres em limites de palavra.It is often the easiest way to separate a string on word boundaries. Ele também é usado para dividir cadeias de caracteres em outros caracteres específicos ou cadeias de caracteres.It is also used to split strings on other specific characters or strings.

Observação

Os exemplos de C# neste artigo são executados no executador de código embutido Try.NET e no playground.The C# examples in this article run in the Try.NET inline code runner and playground. Clique no botão Executar para executar um exemplo em uma janela interativa.Select the Run button to run an example in an interactive window. Ao executar o código, é possível modificá-lo e executar o código modificado clicando em Executar novamente.Once you execute the code, you can modify it and run the modified code by selecting Run again. O código modificado será executado na janela interativa ou, se a compilação falhar, a janela interativa exibirá todos as mensagens de erro do compilador C#.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

O código a seguir divide uma frase comum em uma matriz de cadeias de caracteres para cada palavra.The following code splits a common phrase into an array of strings for each word.

string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');

foreach (var word in words)
{
    System.Console.WriteLine($"<{word}>");
}

Cada instância de um caractere separador produz um valor na matriz retornada.Every instance of a separator character produces a value in the returned array. Caracteres separadores consecutivos produzem a cadeia de caracteres vazia como um valor na matriz retornada.Consecutive separator characters produce the empty string as a value in the returned array. Você pode ver isso no exemplo a seguir, que usa espaço como um separador:You can see this in the following example, which uses space as a separator:

string phrase = "The quick brown    fox     jumps over the lazy dog.";
string[] words = phrase.Split(' ');

foreach (var word in words)
{
    System.Console.WriteLine($"<{word}>");
}

Esse comportamento facilita para formatos como arquivos CSV (valores separados por vírgula) que representam dados de tabela.This behavior makes it easier for formats like comma separated values (CSV) files representing tabular data. Vírgulas consecutivas representam uma coluna em branco.Consecutive commas represent a blank column.

Você pode passar um parâmetro StringSplitOptions.RemoveEmptyEntries opcional para excluir as cadeias de caracteres vazias da matriz retornada.You can pass an optional StringSplitOptions.RemoveEmptyEntries parameter to exclude any empty strings in the returned array. Para um processamento mais complicado da coleção retornada, você pode usar o LINQ para manipular a sequência de resultado.For more complicated processing of the returned collection, you can use LINQ to manipulate the result sequence.

O String.Split pode usar vários caracteres separadores.String.Split can use multiple separator characters. O exemplo a seguir utiliza espaços, vírgulas, pontos, dois-pontos e tabulações, todos passados em uma matriz que contém esses caracteres de separação para Split.The following example uses spaces, commas, periods, colons, and tabs, all passed in an array containing these separating characters, to Split. O loop, na parte inferior do código, exibe cada uma das palavras na matriz retornada.The loop at the bottom of the code displays each of the words in the returned array.

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

As instâncias consecutivas de qualquer separador produzem a cadeia de caracteres vazia na matriz de saída:Consecutive instances of any separator produce the empty string in the output array:

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

O String.Split pode receber uma matriz de cadeias de caracteres (sequências de caracteres que atuam como separadores para analisar a cadeia de caracteres de destino, em vez de um único caractere).String.Split can take an array of strings (character sequences that act as separators for parsing the target string, instead of single characters).

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

Você pode experimentar estes exemplos examinando o código em nosso repositório GitHub.You can try these samples by looking at the code in our GitHub repository. Ou então, você pode baixar os exemplos como um arquivo zip.Or you can download the samples as a zip file.

Consulte tambémSee also