Aproveite o mês das
carreiras na Alura

Até 44% OFF

Falta pouco!

00

DIAS

00

HORAS

00

MIN

00

SEG

Como separar palavras em String com C#

Estou fazendo a manutenção de um e-commerce desenvolvido em C#. Nele é feito o cadastro de pessoas em que são inseridos o nome e o e-mail, e todos os dados são salvos em um arquivo CSV.

Porém, os registros de uma pessoa estão todos contidos em uma única linha do CSV, dificultando a visualização e a filtragem de dados. O exemplo abaixo mostra como estou recebendo os dados da pessoa:

string pessoaRecebida = “EliasRibeiro;[email protected]”;

Acontece que precisamos mandar uma newsletter com as promoções do mês para todos os e-mails cadastrados no e-commerce. E, quando tentamos enviar os e-mails, temos um erro de envio porque o nome dos usuários veio junto com o e-mail, como mostra o exemplo acima.

Para mandar uma newsletter, precisamos pegar apenas o e-mail. Para fazer isso, precisamos separar as duas informações. Como podemos fazer isso?

Fazendo a separação com Substring()

Temos algumas alternativas para pegar apenas uma parte de texto dentro de uma string. Quando o assunto é fazer separações em uma string, logo penso em utilizar Substring(), pois este método separa uma string em uma subparte.

Para fazer isso, precisamos passar a posição inicial e a posição final que quero separar. Por exemplo, temos a seguinte string:

string pessoaRecebida = "elias;[email protected]";

Para fazer a extração apenas do e-mail, temos que passar a posição inicial do e-mail e a posição final. Nesse caso, a posição inicial é a 6 (o começo do e-mail) e a posição final é a 15 (o fim do e-mail):

string pessoaRecebida = "elias;[email protected]";
string email = pessoaRecebida.Substring(6,15);
Console.WriteLine(email);

Perceba que utilizando o Substring() temos uma desvantagem, pois cada vez que tivermos uma string de pessoaRecebida diferente, precisamos mudar os valores das posições. Vamos tentar fazer a separação com o e-mail de outra pessoa:

string pessoaRecebida = "leticia;[email protected]";
string email = pessoaRecebida.Substring(6,18);
Console.WriteLine(email);

Teremos a seguinte saída:

a;leticia@leticia.

Não era este tipo de saída que estamos esperando, pois temos uma parte do nome e o e-mail está incompleto.

Como o método Substring() não conseguiu fazer a separação de modo correto, precisamos buscar outra solução na documentação.

Precisamos de algo que faça o corte entre o nome e o e-mail e então separe-os em duas partes. Mas será que existe alguma outra forma de fazer isso?

Ao rever a documentação, encontramos o método Split() que também faz a separação de strings. Vamos entender melhor as características desse método e por que ele se encaixa melhor.

Banner da Imersão de IA da Alura com Google Gemini. Participe de aulas gratuitas online com certificado. Domine as inovações mais recentes da IA.

Fazendo a separação com Split()

Já que não conseguimos fazer a separação utilizando o Substring(), vamos fazer a separação usando o Split(). Ele faz a separação dos valores conforme o parâmetro que indicamos como divisor da informação.

No nosso caso seria o ; para fazer a divisão da string, pois é o elemento que divide o nome do e-mail na listagem do CSV.

string cadastroDoUsuario = "elias;[email protected]";
string[] dadosDoCadastro =cadastroDoUsuario.Split(';');
Console.WriteLine(dadosDoCadastro);
System.String[]<br>

O Split() vai devolve um array de string com duas posições, em que a primeira posição vai ser o nome e a segunda posição vai ser o e-mail. Estamos pegando apenas o array de string, e por isso vai ser retornado o System.String[], mas queremos apenas o e-mail.

Por ser um array, podemos selecionar apenas um dado (no nosso caso, o e-mail), que está na segunda posição do array:

string cadastroDoUsuario = "elias;[email protected]";
string[] dadosDoCadastro =cadastroDoUsuario.Split(';');
Console.WriteLine(dadosDoCadastro[1]);
[email protected]

Usando o Split() conseguimos extrair o e-mail de todas as pessoas que recebermos no CSV.

Conclusão

Iniciamos o artigo com um CSV com vários tipos de dados, em que não era possível fazer a verificação do que era e-mail e nome, pois teríamos de separar essas informações manualmente.

Começamos fazendo a separação do dado que queremos receber. Inicialmente, optamos pelo método Substring(), que separa a string em subpartes. Porém, como o tamanho da string pode variar, esse método não era a melhor solução para o nosso caso.

Então, encontramos na documentação o método Split(), que faz a separação conforme o valor que vamos passar como parâmetro, então, seja qual for o tamanho da nossa string, conseguimos separar os valores que queremos.

E aí, o que achou do post? Agora ficou mais fácil trabalhar com strings no C#, não acha? Se quiser continuar estudando o assunto, dê uma olhada nos cursos de C# da Alura e continue aprendendo!

Veja outros artigos sobre Programação