1. Caratteri speciali base ed escape
Nel coding le stringhe non sono fatte solo di lettere, ma anche di caratteri speciali: virgolette, a capo, tab, e a volte anche simboli tipo \n e \t. Ma se vuoi scrivere nella stringa Ciao, "user"!, il compilatore subito ti chiede: "E le virgolette dentro la stringa? È un errore?". Ecco perché serve il meccanismo di escape.
In C# l'escape è il modo per "dire che un carattere è speciale" dentro una stringa. Si usa il backslash \ (detto anche "backslash").
Caratteri speciali classici
| Sequenza | Descrizione | Dimostrazione |
|---|---|---|
| \n | A capo | Premuto Invio |
| \t | Tabulazione | Tab |
| \\ | Letteralmente "backslash" | \ |
| \" | Virgolette dentro la stringa | " |
| \' | Apostrofo singolo (serve raramente nelle stringhe) | ' |
| \r | Ritorno carrello (vecchio stile di a capo, usato poco) | |
| \0 | Simbolo Null | (Invisibile) |
| \b | Backspace (cancella il carattere precedente — in console non sempre funziona) |
Come funziona
Scriviamo un paio di stringhe con caratteri in escape per vederli in azione.
Console.WriteLine("Ciao, \"Utente\"!");
// Output: Ciao, "Utente"!
Console.WriteLine("C:\\Program Files\\MyApp");
// Output: C:\Program Files\MyApp
Console.WriteLine("Riga 1\nRiga 2");
// Output:
// Riga 1
// Riga 2
Console.WriteLine("Io\tamo\tla tabulazione!");
// Output:
// Io amo la tabulazione!
Così, con una semplice barretta (\), puoi "infilare" quasi ogni carattere speciale in una stringa senza far andare in tilt il compilatore o il tuo collega.
2. Stringhe normali e verbatim (@-stringhe)
E se ti serve scrivere un sacco di backslash — tipo nei percorsi dei file? Fare sempre \\ è una tortura. Per fortuna in C# ci sono i letterali verbatim (verbatim strings), che iniziano con @.
Come si presenta?
string path = "C:\\Users\\Ann\\Documents\\";
string verbatimPath = @"C:\Users\Ann\Documents\";
Nelle stringhe verbatim non serve l'escape — il backslash è solo un carattere normale. Ma occhio: le virgolette dentro queste stringhe vanno scritte doppie!
string quote = @"Questa è una stringa verbatim con virgolette: ""Hello""!";
Console.WriteLine(quote);
// Output: Questa è una stringa verbatim con virgolette: "Hello"!
Confronto visivo
| Stile | Sintassi | Come funziona |
|---|---|---|
| Normale | "C:\\Folder\\File.txt" | Ogni \ è doppio |
| Verbatim (@) | @"C:\Folder\File.txt" | Tutti i \ sono normali |
| Verbatim con virgolette | @"Testo con ""virgolette"" dentro" | Virgolette — doppie |
Tip da pro: usa le stringhe verbatim per i percorsi dei file, testo multilinea e template di regex.
3. A capo e stringhe multilinea
Spesso ti serve scrivere un messaggio su più righe o un ASCII-art. Il modo più diretto è usare \n in una stringa normale o i letterali verbatim. Il letterale verbatim mantiene tutti i caratteri come sono, inclusi gli a capo. Esempio:
Console.WriteLine("Prima riga\nSeconda riga");
Console.WriteLine(@"Stringa multilinea.
Dove non servono escape per gli a capo
E anche le tabulazioni funzionano come sono.");
Inoltre in C# sono arrivati da poco i raw string literals (tripla virgoletta), che ti permettono di scrivere testo multilinea senza raddoppiare le virgolette. Esempio:
string json = """
{
"name": "Alice",
"age": 30,
"skills": ["C#", "SQL", "Azure"]
}
""";
Console.WriteLine(json);
4. Unicode — come in C# si salvano tutti i simboli del mondo
Oggi lavoriamo non solo con l'alfabeto latino, ma anche con il cirillico, ideogrammi, simboli matematici e pure emoji. Tutto questo è possibile grazie al sistema di codifica dei caratteri — Unicode.
Cos'è Unicode?
Unicode è uno standard internazionale che assegna un numero unico (code point) a ogni simbolo, a prescindere dalla lingua e dalla piattaforma. Così puoi usare in C# testo cirillico, inglese, ideogrammi cinesi e anche simboli strani tutti insieme.
Esempio di stringa in varie lingue:
Console.WriteLine("Hello, mondo! 你好! مرحبا!");
Simboli Unicode nelle stringhe
Puoi scrivere direttamente qualsiasi simbolo supportato dalla tua codifica, oppure usare le escape sequence tipo \uXXXX, dove XXXX è il codice esadecimale a 4 cifre del simbolo.
Console.WriteLine("Simbolo: \u263A"); // Mostra ☺
Per i simboli con codice sopra 65535 (tipo molte emoji), si usa \UXXXXXXXX (8 cifre):
Console.WriteLine("Emoji: \U0001F60A"); // Mostra 😊
Cosa ti permette di fare?
- Puoi salvare e gestire qualsiasi testo.
- Non aver paura di mischiare lingue e simboli strani — C# e .NET supportano Unicode “out of the box”.
- Fondamentale se lavori con utenti internazionali e alfabeti non standard.
5. Emoji e caratteri speciali nelle stringhe
Le stringhe moderne non sono solo lettere, ma anche emoji! Tipo, vuoi mandare un messaggio simpatico con una "faccina" all'utente.
Come aggiungere un'emoji in una stringa?
Inserisci l'emoji direttamente nella stringa:
Copia l'emoji che vuoi (tipo 😊, 🚀, 🐱) e incollala nel letterale della stringa:
Console.WriteLine("Ciao! 😊");
Usa i codici Unicode:
Per la maggior parte delle emoji usa \U e il codice a 8 cifre.
Console.WriteLine("Ecco un gattino: \U0001F431"); // 🐱
I codici delle emoji li trovi nelle tabelle Unicode online.
Particolarità delle emoji
Le emoji possono occupare 2 o più caratteri nella stringa (perché il loro codice Unicode è più di 16 bit).
Per alcune operazioni (tipo calcolare la lunghezza della stringa) ci possono essere "sorprese":
string s = "😊";
Console.WriteLine(s.Length); // Potrebbe stampare 2, non 1!
Questo perché il codepoint di quell'emoji viene codificato con due caratteri.
Quando stampi in console o su una pagina web, la maggior parte delle emoji si vede bene, se il sistema e il font le supportano.
Esempio di output con emoji
Console.WriteLine("Congratulazioni per il successo! 🎉 Sei un grande! 🚀");
6. Trappole e errori comuni
Chi inizia spesso si confonde con l'escape delle virgolette e dei backslash. Se ti dimentichi l'escape, il compilatore pensa che la stringa finisca prima del previsto.
Errore:
Console.WriteLine("Ha detto: "Ciao!""); // Errore! Il compilatore va in tilt.
Corretto:
Console.WriteLine("Ha detto: \"Ciao!\"");
Oppure, se vuoi stampare un percorso file, a volte fanno così:
Console.WriteLine("C:\Temp\file.txt"); // Errore o risultato strano, tipo: C: emp ile.txt
Perché \t e \f sono caratteri speciali (tab e form feed). Puoi risolvere in due modi principali:
Console.WriteLine("C:\\Temp\\file.txt"); // Doppio backslash
Console.WriteLine(@"C:\Temp\file.txt"); // Stringa verbatim
Ricorda: se usi una stringa verbatim ma ti servono le virgolette, vanno raddoppiate:
Console.WriteLine(@"File ""config.txt"" non trovato."); // File "config.txt" non trovato.
GO TO FULL VERSION