Exercício – Descobrir Split() e Join()
- 10 minutos
Ao continuar seu trabalho de desenvolvimento para uma empresa de logística, comece a criar uma série de pequenos aplicativos. Esses aplicativos trabalham juntos para pegar dados do sistema de um parceiro, modificá-los e então passá-los para um sistema interno no formato necessário.
Para realizar a transformação de dados, você precisa aceitar os dados de entrada como uma cadeia de caracteres, analisá-los em elementos de dados menores e, em seguida, manipulá-los para que correspondam aos diferentes formatos necessários. Como você pode analisar os dados da cadeia de caracteres em elementos de dados menores?
Métodos de matriz do tipo de dados de cadeia de caracteres
As variáveis do tipo string têm muitos métodos internos que convertem uma única cadeia de caracteres em uma matriz de cadeias de caracteres menores ou em uma matriz de caracteres individuais.
Quando você processa dados de outros sistemas de computador, às vezes eles são formatados ou codificados de uma forma que não é útil para seus propósitos. Nesses casos, você usa os métodos Array do tipo de dados string para analisar uma cadeia de caracteres em uma matriz.
Use o ToCharArray() para reverter um string
Exclua ou use o operador de comentário de linha
//para comentar todo o código dos exercícios anteriores.Atualize seu código no Editor do Visual Studio Code da seguinte maneira:
string value = "abc123"; char[] valueArray = value.ToCharArray();
Nesse exemplo, o método ToCharArray() é usado para criar uma matriz de char, onde cada elemento da matriz representa um caractere da cadeia de caracteres original.
Inverter e, em seguida, combinar a matriz char em uma nova cadeia de caracteres
Em seguida, a ordem dos caracteres na matriz é invertida e o método Write é usado para combiná-los novamente em uma única saída.
Atualize seu código no Editor do Visual Studio Code da seguinte maneira:
string value = "abc123"; char[] valueArray = value.ToCharArray(); Array.Reverse(valueArray); string result = new string(valueArray); Console.WriteLine(result);A expressão
new string(valueArray)cria uma instância vazia da classeSystem.String(que é a mesma do tipo de dadosstringem C#) e passa a matriz char como um construtor.Observação
O que é a palavra-chave
new? Como a classeSystem.Stringestá relacionada ao tipo de dadosstringem C#? O que é um construtor? Todas excelentes perguntas que não estão no escopo deste módulo. É recomendado continuar aprendendo sobre a biblioteca de classes do .NET, bem como as classes e os objetos em C#, para entender completamente o que acontece nos bastidores com essa expressão de código. Por enquanto, use um mecanismo de pesquisa e a Documentação da Microsoft para encontrar exemplos que possam ser usados em situações como essa, em que você sabe que deseja realizar uma conversão, mas não tem certeza de como fazê-la usando o C#.No menu Arquivo do Visual Studio Code, selecione Salvar.
O arquivo Program.cs deve ser salvo antes de criar ou executar o código.
No painel EXPLORER, para abrir um Terminal no local da pasta TestProject, clique com o botão direito do mouse em TestProject e selecione Abrir no Terminal Integrado.
Um painel Terminal deve ser aberto e incluir um prompt de comando mostrando que o Terminal está aberto no local da pasta TestProject.
No prompt de comando do terminal, para executar o código, digite dotnet run e pressione Enter.
Observação
Se você vir uma mensagem com a mensagem "Não foi possível encontrar um projeto a ser executado", verifique se o prompt de comando Terminal exibe o local esperado da pasta TestProject. Por exemplo:
C:\Users\someuser\Desktop\csharpprojects\TestProject>A seguinte saída deve ser exibida:
321cba
Combine todos os caracteres em uma nova cadeia de caracteres com valor separado por vírgula usando Join()
Em alguns casos, pode ser necessário separar cada elemento da matriz de caracteres usando uma vírgula, o que é uma prática comum ao trabalhar com dados representados como texto ASCII. Para fazer isso, comente a linha de código adicionada na Etapa 2 e use o método String classe Join(), passando o caractere que você deseja delimitar cada segmento (a vírgula) e o próprio matriz.
Atualize seu código no Editor do Visual Studio Code da seguinte maneira:
string value = "abc123"; char[] valueArray = value.ToCharArray(); Array.Reverse(valueArray); // string result = new string(valueArray); string result = String.Join(",", valueArray); Console.WriteLine(result);Salve o arquivo de código e use o Visual Studio Code para executar o código.
A seguinte saída deve ser exibida:
3,2,1,c,b,a
Split() a nova cadeia de caracteres de valor separado por vírgula em uma matriz de cadeias de caracteres
Para completar o código, o método Split() é usado. Esse método foi desenvolvido para variáveis do tipo string e cria uma matriz de cadeias de caracteres.
Use o Editor do Visual Studio Code para adicionar as seguintes linhas de código na parte inferior do arquivo:
string[] items = result.Split(','); foreach (string item in items) { Console.WriteLine(item); }Reserve um minuto para analisar o código anterior.
A vírgula é fornecida para
.Split()como o delimitador que divide uma cadeia de caracteres longa em cadeias menores. Em seguida, o código usa um loopforeachpara fazer a iteração por cada elemento da matriz de cadeias de caracteres recém-criada,items.Verifique se o código agora aparece da seguinte forma:
string value = "abc123"; char[] valueArray = value.ToCharArray(); Array.Reverse(valueArray); // string result = new string(valueArray); string result = String.Join(",", valueArray); Console.WriteLine(result); string[] items = result.Split(','); foreach (string item in items) { Console.WriteLine(item); }Salve o arquivo de código e use o Visual Studio Code para executar o código.
Ao executar o código, você verá a seguinte saída:
3,2,1,c,b,a 3 2 1 c b aA matriz
itemscriada usandostring[] items = result.Split(',');é usada no loopforeache exibe os caracteres individuais dostringoriginal contido na variávelvalue.
Recapitulação
Aqui estão alguns pontos importantes a serem lembrados ao trabalhar com cadeias de caracteres e matrizes:
- Para criar uma matriz, use métodos como
ToCharArray()eSplit() - Para transformar a matriz novamente em uma única cadeia de caracteres, use métodos como
Join()ou crie uma nova cadeia de caracteres passando um matriz dechar