Sequenza di escape non riconosciuta per la stringa del percorso contenente barre rovesciate


90

Il codice seguente genera un errore del compilatore su una "sequenza di escape non riconosciuta" per ogni barra rovesciata:

string foo = "D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

Immagino di dover sfuggire al backslash? Come lo faccio?

Risposte:


224

È possibile utilizzare ogni volta una doppia barra rovesciata

string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";

oppure usa il simbolo @

string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

Questo ha anche aiutato a risolvere un problema Html.TextBoxFor che stavo avendo. L'uso di @ prima dell'espressione regolare ha risolto la sequenza di escape Non riconosciuta, in cui la doppia barra rovesciata non era riuscita.
Joshua,

27

Prova questo:

string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

Il problema è che in una stringa a \è un carattere di escape. Usando il @segno si dice al compilatore di ignorare i caratteri di escape.

Puoi anche cavartela sfuggendo \:

string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";

4
FWIW e per aiutare Googlebot, il termine per @ "" è una "stringa letterale letterale". Anche se l'ho anche sentito chiamare semplicemente "stringa letterale", che tecnicamente include la "stringa regolare letterale" di "". msdn.microsoft.com/en-us/library/aa691090(VS.71).aspx
Mark Brackett


9

Se la tua stringa è un percorso di file, come nel tuo esempio, puoi anche utilizzare percorsi di file in stile Unix:

string foo = "D:/Projects/Some/Kind/Of/Pathproblem/wuhoo.xml";

Ma le altre risposte hanno le soluzioni più generali per l'escape di stringhe in C #.


5
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";

Funzionerà, o anche gli esempi precedenti. @ "..." significa trattare letteralmente tutto ciò che si trova tra le virgolette, quindi puoi farlo

@"Hello
world"

Per includere una nuova riga letterale. Sono più vecchia scuola e preferisco scappare "\" con "\\"


Ma il doppio "non viene trattato alla lettera.
Ala Sendon
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.