Botón para abrir el Menú Botón para cerrar el Menú
Logo da empresa Alura
Iniciar Sesión Nuestros Planes
Formaciones Conoce a Luri
  • Programación _
  • Front End _
  • Data Science _
  • DevOps _
  • Innovación y Gestión _
Artículos de Tecnología > Programación

¿Cómo separar palabras en String con C#?

Elias Ribeiro
Elias Ribeiro
26/09/2023

Compartir

Mira este artículo:
  1. Haciendo la separación con Substring
  2. Hacer la separación con Split
  3. Conclusión

img1-portada alt=

Estoy haciendo el mantenimiento de un E-commerce desarrollado en C#, en el cual se realiza el registro de personas donde se inserta el nombre y correo electrónico. Todos los datos se almacenan en un archivo CSV.

Pero todos los registros de una persona están contenidos en una sola línea del CSV y para realizar la visualización y el filtrado de datos tenemos cierta dificultad.

El siguiente ejemplo muestra cómo recibo los datos de la persona.

string personaRecebida = "EliasRibero;[email protected]";

Pero necesitamos enviar un correo electrónico de marketing (newsletter) con las promociones del mes a todos los correos electrónicos registrados en el ecommerce.

Sin embargo, cuando intentamos enviar los correos electrónicos terminamos teniendo un error de envío porque el nombre de los usuarios venía junto con el correo electrónico:

Para enviar un boletín sólo tengo que utilizar el correo electrónico, por lo que tenemos que separar estos datos. ¿Cómo podemos hacerlo?

Haciendo la separación con Substring

Tenemos algunas alternativas para hacer solo una parte del texto dentro de una string. Sin embargo, cuando pienso en hacer separaciones, luego pienso en utilizar Substring pues este método hace la separación de la cadena en una subparte.

Para eso tengo que pasar la posición inicial y final que quiero separar.

Por ejemplo, tengo la siguiente string:

string personaRecebida = "Elias;[email protected]";

Para hacer la extracción solo del correo electrónico. Tengo que pasar la posición inicial del correo electrónico y la posición final. En este caso la posición inicial es la 6 que es el comienzo del correo electrónico y la posición final es la 15 que es cuando termina el correo electrónico.

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

Tenga en cuenta que al usar una Substring tengo un punto malo, ya que cada vez que tengo una cadena de personas Recibido diferente, tengo que cambiar los valores de las posiciones.

Intentaré separar el correo de Leticia.

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

Y tendremos esa salida:

a;leticial@leticia

No era este tipo de salida lo que me gustaría obtener, porque aquí tengo una parte del nombre y no tengo la dirección de correo completa.

Debido a que la función SubString no pudo realizar la separación correctamente, tendré que buscar más funciones en la documentación.

Necesito algo que corte entre el nombre y el correo electrónico y los separe en dos. ¿Pero hay alguna otra manera de hacerlo?

Al revisar la documentación encontré la función Split que también realiza la separación. Vamos a entender un poco más de las características de esta función y ver si encaja mejor.

Hacer la separación con Split

Ya que no podemos hacer la separación usando el Substring. Hagamos la separación usando Split , que separa los valores según el parámetro que indicamos que es el divisor de información.

En nuestro caso sería ; para dividir la string, ya que es el elemento que divide el nombre del correo electrónico en la lista csv.

string registroDeUsuario = "Elias;[email protected]";
string[] datosDeRegistro = registroDeUsuario.Split(';');
Console.WriteLine(datosDeRegistro);

La salida será:

System.String[]

Split nos devolverá un array de string de dos posiciones, donde la primera posición será el nombre y la segunda posición será la dirección de correo electrónico. Aquí tomamos solo el array de cadena por lo que se devolverá el System.String[], pero queremos recopilar solo el correo electrónico..

Como es un array solo puedo seleccionar un dato, en los datos de nuestro correo electrónico, que está en la segunda posición del array.

string registroDeUsuario = "Elias;[email protected]";
string[] datosDeRegistro =registroDeUsuario.Split(';');
Console.WriteLine(datosDeRegistro[1]);
//Salida: [email protected]

Con esto toda la persona que recibimos podremos extraer el correo electrónico de CSV.

Conclusión

Comenzamos con un CSV con varios tipos de datos, del cual no era posible verificar cuál era el correo electrónico y el nombre, porque tendríamos que recuperar la separación del correo electrónico a mano.

Luego tendríamos que separar los datos que vamos a recibir. Optamos por utilizar el método substring que realiza la separación de la string que pasamos en subpartes. Pero como el tamaño de la string puede cambiar, no sería un buen uso.

Con todo esto buscamos en la documentación otro método que nos ayudara y encontrar Split.

Realiza la separación según el valor que vamos a pasar como parámetro, así sin importar el tamaño que tenga nuestra string podremos separar los valores.

¿Qué te pareció? Ahora es más fácil trabajar con datos en C# ¿no crees? Si quieres seguir estudiando sobre el tema, echa un vistazo a nuestros cursos en Alura de C# ¡sigue aprendiendo!

Escrito para Alura por Elias Ribeiro.

Traducido para Alura Latam por Priscila Stork

Artículo Anterior
Ordenando colecciones con Comparable y Comparator
Siguiente Artículo
Métodos de petición HTTP

Ver otros artículos sobre Programación

Navegación

  • Planes
  • Instructores
  • Blog
  • Política de privacidad
  • Términos de uso
  • Sobre nosotros
  • Preguntas frecuentes

¡CONTÁCTANOS!

  • ¡Quiero entrar en contacto!

Blog

  • Programación
  • Data Science
  • Front End
  • Innovación y Gestión
  • DevOps

AOVS Sistemas de Informática S.A CNPJ 05.555.382/0001-33

SÍGUENOS EN NUESTRAS REDES SOCIALES

YouTube Facebook Instagram Linkedin Whatsapp Spotify

NOVEDADES Y LANZAMIENTOS

Aliados

  • Programa de aceleração Scale-Up Endeavor
  • En Alura somos unas de las Scale-Ups seleccionadas por Endeavor, programa de aceleración de las empresas que más crecen en el país.
  • Growth Academy 2021 do Google For Startups
  • Fuimos unas de las 7 startups seleccionadas por Google For Startups en participar del programa Growth Academy en 2021
Alura

Powered by

Caelum

AOVS Sistemas de Informática S.A CNPJ 05.555.382/0001-33

SÍGUENOS EN NUESTRAS REDES SOCIALES

YouTube Facebook Instagram Linkedin Whatsapp Spotify

Cursos

Cursos de Programación
Lógica de Programación | Java
Cursos de Front End
HTML y CSS | JavaScript | React
Cursos de Data Science
Data Science | Machine Learning | Excel | Base de Datos | Data Visualization | Estadística
Cursos de DevOps
Docker | Linux
Cursos de Innovación y Gestión
Transformación Ágil | Marketing Analytics

Alura

  • Educação em Tecnologia

    • logo fiap FIAP
    • logo casa do codigo Casa do Código
    • logo pm3 PM3 - Cursos de Produto
  • Mais Alura

    • logo alura start START BY Alura
    • logo alura lingua Alura Língua
    • logo alura para empresas Alura Para Empresas
    • logo alura latam Alura LATAM
  • Comunidade

    • logo tech guide Tech Guide
    • logo 7 days of code 7 days of code
    • logo Hipsters ponto Jobs Hipsters ponto Jobs
  • Podcasts

    • logo Hipster Network Hipster Network
    • logo Hipsters ponto Tech Hipsters ponto Tech
    • logo Dev sem fronteiras Dev sem Fronteiras
    • logo Like a Boss Like a Boss
    • logo IA Sob Controle IA Sob Controle
    • logo Mesa de Produto Mesa de Produto
    • logo Decode Decode
    • logo FIAPCast FIAPCast