C# Language
Sequenze di escape delle stringhe
Ricerca…
Sintassi
- \ '- virgoletta singola (0x0027)
- \ "- virgolette doppie (0x0022)
- \\ - backslash (0x005C)
- \ 0 - null (0x0000)
- \ a - alert (0x0007)
- \ b - backspace (0x0008)
- \ f - form feed (0x000C)
- \ n - nuova riga (0x000A)
- \ r - ritorno a capo (0x000D)
- \ t - scheda orizzontale (0x0009)
- \ v - scheda verticale (0x000B)
- \ u0000 - \ uFFFF - Carattere Unicode
- \ x0 - \ xFFFF - Carattere Unicode (codice con lunghezza variabile)
- \ U00000000 - \ U0010FFFF - Carattere Unicode (per la generazione di surrogati)
Osservazioni
Le sequenze di escape di stringhe vengono trasformate nel carattere corrispondente in fase di compilazione . Le stringhe ordinarie che contengono stringhe all'indietro non vengono trasformate.
Ad esempio, le stringhe notEscaped
e notEscaped2
seguito non vengono trasformate in un carattere di nuova riga, ma resteranno come due caratteri diversi ( '\'
e 'n'
).
string escaped = "\n";
string notEscaped = "\\" + "n";
string notEscaped2 = "\\n";
Console.WriteLine(escaped.Length); // 1
Console.WriteLine(notEscaped.Length); // 2
Console.WriteLine(notEscaped2.Length); // 2
Sequenze di escape dei caratteri Unicode
string sqrt = "\u221A"; // √
string emoji = "\U0001F601"; // 😁
string text = "\u0022Hello World\u0022"; // "Hello World"
string variableWidth = "\x22Hello World\x22"; // "Hello World"
Scappare simboli speciali in caratteri letterali
Apostrophes
char apostrophe = '\'';
Barra rovesciata
char oneBackslash = '\\';
Scappare simboli speciali in stringhe letterali
Barra rovesciata
// The filename will be c:\myfile.txt in both cases
string filename = "c:\\myfile.txt";
string filename = @"c:\myfile.txt";
Il secondo esempio utilizza letteralmente una stringa letterale , che non considera la barra rovesciata come un carattere di escape.
Citazioni
string text = "\"Hello World!\", said the quick brown fox.";
string verbatimText = @"""Hello World!"", said the quick brown fox.";
Entrambe le variabili conterranno lo stesso testo.
"Ciao mondo!", Disse la rapida volpe marrone.
newlines
I valori letterali stringa letterali possono contenere righe nuove:
string text = "Hello\r\nWorld!";
string verbatimText = @"Hello
World!";
Entrambe le variabili conterranno lo stesso testo.
Le sequenze di escape non riconosciute producono errori in fase di compilazione
I seguenti esempi non verranno compilati:
string s = "\c";
char c = '\c';
Invece, produrranno l'errore Unrecognized escape sequence
al momento della compilazione.
Utilizzo delle sequenze di escape negli identificatori
Le sequenze di escape non sono limitate a string
e char
letterali.
Supponi di dover eseguire l'override di un metodo di terze parti:
protected abstract IEnumerable<Texte> ObtenirŒuvres();
e supponiamo che il carattere Œ
non sia disponibile nella codifica dei caratteri che usi per i tuoi file sorgente C #. Sei fortunato, è consentito utilizzare gli escape del tipo \u####
o \U########
in identificatori nel codice. Quindi è legale scrivere:
protected override IEnumerable<Texte> Obtenir\u0152uvres()
{
// ...
}
e il compilatore C # saprà Œ
e \u0152
hanno lo stesso carattere.
(Tuttavia, potrebbe essere una buona idea passare a UTF-8 o una codifica simile in grado di gestire tutti i caratteri.)