Como separar cadeias de caracteres usando String.Split em C#
O método String.Split cria uma matriz de subcadeias, dividindo a cadeia de caracteres de entrada com base em um ou mais delimitadores. Esse método geralmente é a maneira mais fácil de separar uma cadeia de caracteres em limites de palavra. Ele também é usado para dividir cadeias de caracteres em outros caracteres específicos ou cadeias de caracteres.
Observação
Os exemplos de C# neste artigo são executados no executador de código embutido Try.NET e no playground. Clique no botão Executar para executar um exemplo em uma janela interativa. Ao executar o código, é possível modificá-lo e executar o código modificado clicando em Executar novamente. 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#.
Exemplos de String.Split
O código a seguir divide uma frase comum em uma matriz de cadeias de caracteres para cada palavra.
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. Como as matrizes em C# são indexadas a zero, cada cadeia de caracteres na matriz é indexada de 0 até o valor retornado pela propriedade Array.Length menos 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]}>");
}
Caracteres separadores consecutivos produzem a cadeia de caracteres vazia como um valor na matriz retornada. Você pode ver como uma cadeia de caracteres vazia é criada no exemplo a seguir, que usa o caractere de espaço como separador.
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. Vírgulas consecutivas representam uma coluna em branco.
Você pode passar um parâmetro StringSplitOptions.RemoveEmptyEntries opcional para excluir as cadeias de caracteres vazias da matriz retornada. Para um processamento mais complicado da coleção retornada, você pode usar o LINQ para manipular a sequência de resultado.
O String.Split pode usar vários caracteres separadores. O exemplo a seguir utiliza espaços, vírgulas, pontos, dois pontos e tabulações como caracteres de separação, que são passados para Split em uma matriz. O loop, na parte inferior do código, exibe cada uma das palavras na matriz retornada.
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:
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[] 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);
}
Usar o GitHub Copilot para dividir uma string
Você pode usar o GitHub Copilot no IDE para gerar código para dividir cadeias de caracteres usando String.Split
em C#.
Se você estiver usando o Visual Studio 2022 versão 17.8 ou posterior, poderá experimentar o GitHub Copilot controlado por IA no Visual Studio para gerar código para dividir uma cadeia de caracteres de entrada em subcadeias de caracteres com base em um ou mais delimitadores. Envie sua pergunta como um prompt na janela de bate-papo do Copilot, como no exemplo a seguir. Você também pode enviar prompts usando o bate-papo em linha na própria janela do editor.
Observação
O GitHub Copilot é alimentado por IA, portanto é passível de surpresas e erros. Verifique qualquer código gerado ou sugestões. Para obter mais informações sobre o uso geral do GitHub Copilot, o impacto do produto, a supervisão humana e a privacidade, consulte Perguntas frequentes sobre o GitHub Copilot.
O texto a seguir mostra um exemplo de prompt para o Copilot Chat:
Gere código C# para usar Split.String dividir uma cadeia de caracteres em subcadeias de caracteres. A string de entrada é "Você ganha alguns. Você perde alguns." Os delimitadores são espaço e ponto. Forneça um exemplo de saída.
Você pode personalizar o prompt para usar cadeias de caracteres e delimitadores de acordo com seus requisitos.
Você pode usar recursos de bate-papo, como comandos de barra, referências a arquivos, métodos ou classes e threads, para definir a intenção e obter melhores respostas com o contexto com escopo. Para um arquivo existente que está aberto no IDE, você pode solicitar o GitHub Copilot usando o chat embutido com /generate code to split string1 in #Filename by delimiter spaces
o .
A saída a seguir mostra um exemplo de resposta do Copilot Chat:
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
Quando o Copilot retorna um bloco de código, a resposta inclui opções para copiar o código, inserir o código em um novo arquivo ou visualizar a saída do código.
Observação
Seus resultados podem ser diferentes do que é mostrado nas respostas de exemplo. Os modelos de IA não são determinísticos, ou seja, eles podem retornar respostas diferentes quando fazem a mesma pergunta. Isso pode ser devido a aprendizado e adaptação adicionais ao longo do tempo, variação de idioma, mudanças no contexto, como seu histórico de bate-papo e muito mais.
Para saber mais, veja:
- Central de Confiabilidade do GitHub Copilot
- GitHub Copilot no Visual Studio
- GitHub Copilot no VS Code