1. Caracteres especiales básicos y escape
En programación, los strings no son solo letras, también hay caracteres especiales: comillas, saltos de línea, tabulaciones y a veces cosas como \n y \t. Pero si quieres escribir en un string Hola, "usuario"!, el compilador enseguida te pregunta: “¿Y esas comillas dentro del string, son un error?”. Aquí es donde entra el mecanismo de escape.
En C#, el escape es una forma de "decirle algo especial" a ciertos caracteres dentro de un string. Para eso se usa el backslash \ (sí, el famoso «backslash»).
Caracteres especiales clásicos
| Secuencia | Descripción | Demostración |
|---|---|---|
| \n | Salto de línea | Pulsé Enter |
| \t | Tabulación | Tab |
| \\ | Literalmente "backslash" | \ |
| \" | Comilla dentro del string | " |
| \' | Comilla simple (rara vez se usa en strings) | ' |
| \r | Retorno de carro (estilo antiguo de salto de línea, casi no se usa) | |
| \0 | Carácter nulo | (Invisible) |
| \b | Backspace (borra el carácter anterior — en consola no siempre funciona) |
¿Cómo funciona esto?
Vamos a escribir un par de líneas con caracteres escapados para verlos en acción.
Console.WriteLine("Hola, \"Usuario\"!");
// Salida: Hola, "Usuario"!
Console.WriteLine("C:\\Program Files\\MyApp");
// Salida: C:\Program Files\MyApp
Console.WriteLine("Línea 1\nLínea 2");
// Salida:
// Línea 1
// Línea 2
Console.WriteLine("Yo\tamo\tla tabulación!");
// Salida:
// Yo amo la tabulación!
Así, con una simple rayita (\), puedes “colar” casi cualquier carácter especial en un string, sin que el compilador o tu compi de equipo entren en pánico.
2. Strings normales y verbatim (@-strings)
¿Y si tienes que escribir muchos backslash, por ejemplo en rutas de archivos? Hacer \\ cada vez es para valientes. Por suerte, en C# existen los literales de string verbatim, que empiezan con @.
¿Cómo se ve esto?
string path = "C:\\Users\\Ann\\Documents\\";
string verbatimPath = @"C:\Users\Ann\Documents\";
En los strings verbatim no hace falta escapar nada — el backslash es un carácter normal. Pero ojo: ¡las comillas dentro de estos strings hay que escribirlas dobles!
string quote = @"Esto es un string verbatim con comillas: ""Hello""!";
Console.WriteLine(quote);
// Salida: Esto es un string verbatim con comillas: "Hello"!
Comparación visual
| Estilo | Sintaxis | ¿Cómo funciona? |
|---|---|---|
| Normal | "C:\\Folder\\File.txt" | Cada \ — doble |
| Verbatim (@) | @"C:\Folder\File.txt" | Todos los \ — normales |
| Verbatim con comillas | @"Texto con ""comillas"" dentro" | Comillas — dobles |
Tip pro: usa strings verbatim para rutas de archivos, texto multilínea y plantillas de regex.
3. Saltos de línea y strings multilínea
Muy a menudo necesitas escribir un mensaje multilínea o un arte ASCII. La forma más directa es usar \n en un string normal o literales verbatim. El literal verbatim guarda todos los caracteres tal cual, incluidos los saltos de línea. Ejemplo:
Console.WriteLine("Primera línea\nSegunda línea");
Console.WriteLine(@"String multilínea.
Donde no necesitas escapes para saltos de línea
E incluso las tabulaciones funcionan tal cual.");
Además, en C# ahora existen los raw string literals (comillas triples), que también te dejan escribir texto multilínea sin duplicar comillas. Ejemplo:
string json = """
{
"name": "Alice",
"age": 30,
"skills": ["C#", "SQL", "Azure"]
}
""";
Console.WriteLine(json);
4. Unicode — cómo C# guarda cualquier símbolo del mundo
Hoy en día trabajamos no solo con el alfabeto latino, sino también con cirílico, ideogramas, símbolos matemáticos y hasta emojis. Todo esto es posible gracias al sistema de codificación de caracteres — Unicode.
¿Qué es Unicode?
Unicode es un estándar internacional que le da un número único (code point) a cada símbolo, sin importar el idioma o la plataforma. Así puedes usar en C# texto en cirílico, inglés, chino y hasta símbolos raros, todo junto.
Ejemplo de string en varios idiomas:
Console.WriteLine("Hello, mundo! 你好! مرحبا!");
Símbolos Unicode en strings
Puedes escribir directamente cualquier símbolo soportado por tu codificación, o usar secuencias de escape tipo \uXXXX, donde XXXX es el código hexadecimal de 4 cifras del símbolo.
Console.WriteLine("Símbolo: \u263A"); // Muestra ☺
Para símbolos con código mayor a 65535 (por ejemplo, muchos emojis), se usa \UXXXXXXXX (8 cifras):
Console.WriteLine("Emoji: \U0001F60A"); // Muestra 😊
¿Qué te aporta esto?
- Puedes guardar y procesar cualquier texto.
- No tengas miedo de mezclar idiomas y usar símbolos raros — C# y .NET soportan Unicode “de serie”.
- Es clave si trabajas con usuarios internacionales y alfabetos poco comunes.
5. Emojis y caracteres especiales en strings
Los strings modernos no son solo letras, ¡también hay emojis! Por ejemplo, quieres mandar un mensaje alegre con una “sonrisita”.
¿Cómo meter un emoji en un string?
Pon el emoji directamente en el string:
Solo copia el emoji que quieras (por ejemplo, 😊, 🚀, 🐱) y pégalo en el literal de string:
Console.WriteLine("¡Hola! 😊");
Usa códigos Unicode:
Para la mayoría de los emojis usa \U y el código de 8 cifras.
Console.WriteLine("Aquí va un gatito: \U0001F431"); // 🐱
Puedes encontrar los códigos de emojis en tablas Unicode online.
Detalles al trabajar con emojis
Los emojis pueden ocupar 2 o más caracteres en el string (porque su código Unicode es mayor de 16 bits).
En algunas operaciones (como calcular la longitud del string) puede haber “sorpresas”:
string s = "😊";
Console.WriteLine(s.Length); // Puede mostrar 2, ¡no 1!
Esto pasa porque el codepoint de ese emoji se codifica con dos caracteres.
Al mostrar en consola o en una web, la mayoría de los emojis se ven bien si tu sistema y fuente los soportan.
Ejemplo de string con emojis
Console.WriteLine("¡Felicidades por el éxito! 🎉 ¡Eres un crack! 🚀");
6. Trampas y errores comunes
Al empezar, mucha gente se lía con el escape de comillas y backslash. Por ejemplo, si te olvidas de escapar, el compilador piensa que terminaste el string antes de tiempo.
Error:
Console.WriteLine("Él dijo: "¡Hola!""); // ¡Error! El compilador entra en pánico.
Correcto:
Console.WriteLine("Él dijo: \"¡Hola!\"");
O si quieres mostrar una ruta de archivo, a veces hacen esto:
Console.WriteLine("C:\Temp\file.txt"); // Habrá error o resultado raro, por ejemplo: C: emp ile.txt
Porque \t y \f son caracteres especiales (tabulación y salto de página). Se arregla de dos formas principales:
Console.WriteLine("C:\\Temp\\file.txt"); // Doble backslash
Console.WriteLine(@"C:\Temp\file.txt"); // String verbatim
Importante: si usas un string verbatim pero necesitas comillas dentro, hay que duplicarlas:
Console.WriteLine(@"Archivo ""config.txt"" no encontrado."); // Archivo "config.txt" no encontrado.
GO TO FULL VERSION