1. Introducción
En la práctica, las tareas más comunes con strings suelen ser estas:
- Obtener la longitud de la cadena (y saber si está vacía).
- Cambiar el case de las letras (poner TODO EN MAYÚSCULAS o todo en minúsculas).
- Ver si la cadena contiene una palabra o símbolo buscado.
- Reemplazar una "palabra fea" por algo más decente.
- Dividir la cadena por un separador ("lista de teléfonos separados por coma").
- Quitar espacios al principio y al final de la cadena.
- Obtener una parte de la cadena (por ejemplo, las 3 primeras letras del apellido).
- Comparar dos cadenas — ver si son iguales ignorando el case.
Y para cada una de estas tareas, la clase string tiene su propio método.
Tabla de métodos clave
| Operación | Método/Propiedad | Ejemplo |
|---|---|---|
| Longitud de la cadena | |
|
| Primer carácter | |
|
| Último carácter | |
|
| A minúsculas | |
|
| A mayúsculas | |
|
| Comprobar si hay subcadena | |
|
| Posición de subcadena | |
|
| Extraer parte de la cadena | |
|
| Comparar cadenas | |
|
| Quitar espacios | |
|
| Dividir por separador | |
|
| Unir array en cadena | |
|
| Reemplazar parte | |
|
| ¿Cadena vacía? | |
|
Hoy vamos a ver algunos de ellos.
2. Trabajando con la cadena como un array
Longitud de la cadena: propiedad Length
Lo más básico — saber cuántos caracteres tiene la cadena. Para eso usamos la propiedad Length. Ejemplo:
string name = "Arkadiy";
Console.WriteLine(name.Length); // Mostrará: 7
- Length — es una propiedad (no un método), así que no lleva paréntesis.
- Si la cadena está vacía (""), la longitud será 0.
A veces es útil comprobar la longitud antes de hacer algo "peligroso" (por ejemplo, sacar una subcadena).
Obtener carácter por índice: indexador [i]
Como con los arrays: una cadena es un array de caracteres. Ejemplo:
string hello = "Hello";
char firstChar = hello[0]; // 'P'
char lastChar = hello[^1]; // 't'
Console.WriteLine(firstChar);
- ¡El índice empieza en cero!
- Ojo: si accedes a un índice que no existe (hello[100]), te va a saltar una excepción.
3. Comparación de cadenas
Operadores == y != para strings
En C#, estos operadores simplemente comparan dos cadenas por su contenido.
string word1 = "Hello";
string word2 = "Hello";
bool areEqual = word1 == word2; // true
Método Equals
A diferencia del operador ==, el método Equals permite pasar parámetros. Por ejemplo, comparar cadenas sin importar mayúsculas/minúsculas — cuando "Mama" == "mama" y también igual a "MAMA". Ejemplo:
string pass1 = "Qwerty";
string pass2 = "qwerty";
// comparación estándar con case
bool isSame = pass1.Equals(pass2); // false
// comparación ignorando case
bool ignoreCase = pass1.Equals(pass2, StringComparison.OrdinalIgnoreCase); // true
4. Cambio de case
Para convertir una cadena a mayúsculas (o minúsculas), la clase string tiene 2 métodos especiales: ToLower() y ToUpper().
¿Quieres que el usuario vea tu mensaje en plan "¡IMPORTANTE!"? ¿O necesitas poner todos los nombres en minúsculas para comparar? Es fácil:
string text = "I am not afraid of the gray wolf!";
Console.WriteLine(text.ToUpper()); // MNE NE STRASHEN SERYI VOLK!
Console.WriteLine(text.ToLower()); // mne ne strashen seryi volk!
- Ojo: la cadena original no cambia!
- Se puede usar para comparar cadenas sin importar el case.
5. Quitar espacios de más
¿Y si el usuario mete espacios por accidente (o a propósito, ya sabes cómo son)? Trim te salva. Hay tres variantes:
- Trim — quita todos los espacios al principio y al final de la cadena;
- TrimStart — quita espacios al principio;
- TrimEnd — quita espacios al final.
string raw = " Gosha ";
string cleaned = raw.Trim(); // "Gosha"
Console.WriteLine($"[{cleaned}]");
6. Obtener subcadena: Substring
A veces necesitas sacar solo una parte de la cadena.
string word = "Hello";
string part = word.Substring(2); // "ivet"
string part2 = word.Substring(2, 3); // "ive"
- Substring(startIndex) — desde el carácter startIndex hasta el final.
- Substring(startIndex, length) — desde startIndex tantos caracteres como diga length.
Ojo: si te pasas del límite de la cadena o length < 0, te va a saltar una excepción!
7. Comprobar si la cadena está vacía
Antes de usar una cadena (por ejemplo, en interpolación), mejor comprobar que no es null ni está vacía, si no puedes tener errores o resultados raros.
a) Comprobar null con el operador ==
string s = null;
if (s == null)
Console.WriteLine("La cadena es null");
Pega: no detecta la cadena vacía ("").
b) Comprobar con string.IsNullOrEmpty()
Comprueba tanto null como la cadena vacía:
string s = "";
if (string.IsNullOrEmpty(s))
Console.WriteLine("La cadena está vacía o es null");
c) Comprobar con string.IsNullOrWhiteSpace()
Además, tiene en cuenta cadenas que solo tienen espacios, tabs y otros caracteres “invisibles”:
string s = " ";
if (string.IsNullOrWhiteSpace(s))
Console.WriteLine("La cadena está vacía, es null o solo tiene espacios");
8. Errores típicos al trabajar con métodos de string
- Lo más común — olvidar que los strings son inmutables (immutable), como ya vimos arriba.
- Otro fallo típico — olvidar la sensibilidad al case al buscar o comparar.
Por ejemplo, si el usuario mete el nombre "andrey", pero en la lista ya está "Andrey", usar simplemente Contains o == puede no funcionar si no pones ambos strings en el mismo case o usas la sobrecarga adecuada del método.
También cuidado con los métodos que devuelven índices. Los índices empiezan en cero, y si te devuelve -1, significa que no encontró nada, no que sea "índice 0".
GO TO FULL VERSION