Método que toma un mensaje y un índice, crea una subcadena usando el índice.
Problema: Quiero escribir un método que tome una pareja de mensaje/índice como esta:
("Hola, soy *Nombre1, ¿cómo estás haciendo *Nombre2?", 2)
El índice se refiere al nombre delimitado por asteriscos en el mensaje. Entonces, si el índice es 1, debería referirse a *Nombre1, si es 2 debería referirse a *Nombre2.
El método debería devolver solo el nombre con el asterisco (*Nombre2).
He intentado jugar con las subcadenas, tomando el primer delimitador * y terminando cuando llegamos a un carácter que no es una letra, número, guión bajo o guión, pero la lógica simplemente no está funcionando.
Sé que esto es similar a algunos problemas en SO, pero no puedo encontrar nada específico. Cualquier ayuda es apreciada.
Esto es lo que queda de mi intento muy vago hasta ahora. Basado en este hilo:
davy.ai
Solución:
Para resolver este problema, necesitamos seguir los siguientes pasos:
Así es como podemos implementarlo en C#:
Veamos cada línea del código para entender lo que está sucediendo:
startIndex
yendIndex
– que contendrán los índices de inicio y final del nombre que queremos extraer.Usamos el método
IndexOf
para encontrar el índice del inicio del nombre deseado en la cadena de mensaje. Construimos la cadena de búsqueda usando el argumento de índice en la forma*Name {index}
, que corresponde al nombre que queremos extraer. Agregamos 1 al resultado del métodoIndexOf
para tener en cuenta el delimitador de asterisco.A continuación, encontramos el índice final del nombre buscando el primer carácter de espacio después del índice de inicio.
Substring
para extraer el nombre de la cadena de mensaje.El método
Substring
toma dos argumentos – el índice de inicio y la longitud de la subcadena que queremos extraer. Calculamos la longitud restando el índice de inicio del índice final.Ahora, podemos llamar a este método con cualquier valor de mensaje e índice, y extraerá correctamente el nombre deseado de la cadena de mensaje.
Espero que esto ayude. Hazme saber si tienes alguna pregunta.