CodeGym /Cursos /C# SELF /Métodos avanzados de la clase string

Métodos avanzados de la clase string

C# SELF
Nivel 9 , Lección 4
Disponible

1. Buscar una subcadena en un string

En la lección anterior aprendiste a obtener una subcadena de un string. Ahora vamos a aprender a encontrar un string dentro de otro. Para esto hay 5 métodos buenísimos:

Método Contains: ¿el string contiene la subcadena?

Devuelve true si el string pasado está contenido en el string donde llamaste el método.

string phrase = "Viento de cambios";
bool hasWord = phrase.Contains("cambios"); // true
Comprobando si existe una subcadena usando Contains

¡La búsqueda distingue entre mayúsculas y minúsculas! "viento".Contains("V")false.

Método IndexOf: encontrar la posición de la subcadena

Muy parecido a cómo funciona IndexOf en arrays: busca una subcadena en el string (de principio a fin) y devuelve el índice de la primera aparición de la subcadena.

string text = "sandíamelsandía";
int index = text.IndexOf("mel"); // 2
Buscar la posición de una subcadena usando IndexOf
  • Si no encuentra nada, devuelve -1.
  • Hay una alternativa con posición inicial: IndexOf("mel", 4). Igual que en los arrays.

Método LastIndexOf: última aparición

También parecido a LastIndexOf en arrays: busca una subcadena en el string (de final a principio) y devuelve el índice de la primera aparición de la subcadena desde el final.

string repeated = "tarea tarea";
int last = repeated.LastIndexOf("tarea"); // 7
Buscar la última aparición de una subcadena usando LastIndexOf

¿Empieza/termina el string con una subcadena?

Muchas veces necesitas comprobar si tu string empieza (o termina) con una subcadena concreta. Para eso hay dos métodos:

  • StartsWith — comprueba si el string empieza con una subcadena;
  • EndsWith — comprueba si el string termina con una subcadena.
string fileName = "foto.jpg";
bool isJpg = fileName.EndsWith(".jpg"); // true

string email = "soporte@company.com";
bool isSupport = email.StartsWith("soporte"); // true
Comprobando el inicio y el final de un string

Si quieres comparar sin distinguir mayúsculas y minúsculas, tienes que pasar un parámetro extra indicando el modo de comparación (mira la documentación para StringComparison.OrdinalIgnoreCase).

2. Método Replace: reemplazar caracteres y subcadenas

El método Replace reemplaza todas las apariciones del string A por el string B. ¡Apareció como herramienta para luchar contra los typos, la censura y para reemplazar variables en plantillas! (Es broma.)

string address = "Londres, calle Baker-street";
string updated = address.Replace("Londres", "París");
Console.WriteLine(updated); // "París, calle Baker-street"
Reemplazar una subcadena usando Replace
  • Puedes reemplazar incluso caracteres individuales: str.Replace('a', 'z')
  • Importante: todos los reemplazos se hacen en todo el string, no solo en la primera aparición.

3. Método Split: cortamos el string en trozos

El método Split hace lo siguiente: toma tu string y lo corta en partes usando separadores — caracteres o strings por los que hay que dividir. El método devuelve un array de strings en los que ha cortado el string original.

string[] parts = originalString.Split(separator);
Sintaxis del método Split
  • separator — carácter o array de caracteres que se usarán como separador.

El ejemplo más simple

Dividimos el string por espacio:

string input = "manzana pera naranja plátano";
string[] fruits = input.Split(' '); 	// contiene el array ["manzana","pera","naranja","plátano"]
Console.WriteLine(fruits[0]); 			// "manzana"
Console.WriteLine(fruits[1]); 			// "pera"

Aquí obtenemos un array de strings de longitud 4, donde cada palabra es un elemento separado del array.

Varios separadores

A veces en el string puede haber más de un tipo de separador. Por ejemplo, el usuario pudo meter valores separados por espacio, coma o punto y coma.

En estos casos puedes usar un array de caracteres separadores:

string input = "manzana, pera; naranja plátano";
char[] separators = { ' ', ',', ';' };
string[] fruits = input.Split(separators, StringSplitOptions.RemoveEmptyEntries);

Bonus: el parámetro opcional StringSplitOptions.RemoveEmptyEntries elimina fragmentos vacíos. Esto es útil si el usuario mete varios separadores seguidos — por ejemplo, dos espacios o algo como "manzana,, pera".

Dividir por subcadena

Los separadores pueden ser strings, no solo caracteres. Por ejemplo, si tienes un archivo CSV con separador ";" o |:

// Separador por un solo carácter
string data = "Ivanov;Petrov;Sidorov";
string[] names = data.Split(';'); // por el carácter ';'

// O si el separador es un string entero:
string log = "2024-01-01::Error::No se pudo completar la tarea";
string[] separators = { "::" };
string[] parts = log.Split(separators);

4. Método Join: juntamos el array de strings de nuevo

El método Join hace lo contrario: toma un array de strings y los une en un solo string, poniendo entre los elementos el separador que elijas.

string result = string.Join(separator, arrayOfStrings);
Sintaxis del método Join
  • separator — string que se insertará entre los elementos.
  • arrayOfStrings — array o colección de strings (string[], List<string> y otros).

El ejemplo más sencillo

Creamos de un array de strings un solo string con comas:

string[] items = { "manzana", "pera", "naranja", "plátano" };
string joined = string.Join(", ", items);
Console.WriteLine(joined); // "manzana, pera, naranja, plátano"
Unir un array de strings usando Join

Unir con separador vacío — pegamos los strings en uno solo

A veces solo quieres juntar los strings seguidos, sin poner nada entre ellos:

string[] parts = { "Yo", "amo", "C#" };
string message = string.Join("", parts);
Console.WriteLine(message); // "YoamoC#"
Unir strings sin separador

5. Errores típicos

Muy a menudo los que empiezan se olvidan de quitar los espacios extra después de dividir el string con Split. Por ejemplo, si el usuario se le va la mano y escribe "manzana, pera ,plátano", después de Split tendrás elementos como " pera ". Si conviertes a números o comparas, tendrás un bug. Usa Trim() después de Split para cada elemento — es una buena costumbre.

Otro tema — strings vacíos de más. Cuando el usuario mete dos separadores seguidos o empieza y termina el string con un separador, Split puede devolver elementos vacíos. Activa StringSplitOptions.RemoveEmptyEntries para no pillar errores después.

Si el array para Join tiene elementos vacíos o null, Join simplemente los ignora. Pero si no quieres eso (por ejemplo, si en un informe es importante mostrar que algunos valores faltan), tendrás que procesar el array a mano antes.

Y otra cosa: Split nunca cambia el string original, sino que devuelve un array nuevo. Join tampoco cambia el array original, sino que da un string nuevo. Recuerda: los strings y arrays en C# son inmutables (no se pueden cambiar).

Comentarios (1)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
vcuaya Nivel 20, Puebla, Mexico
13 febrero 2026
Esto es incorrecto: string repeated = "tarea tarea"; int last = repeated.LastIndexOf("tarea"); // 7 tarea inicia en la posición 6, por lo tanto, last = 6