CodeGym /Corsi /C# SELF /Escape, caratteri speciali e interpolazione di stringhe

Escape, caratteri speciali e interpolazione di stringhe

C# SELF
Livello 9 , Lezione 1
Disponibile

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.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION