Nicht erkannte Escape-Sequenz für Pfadzeichenfolgen mit Backslashes


87

Der folgende Code generiert einen Compilerfehler über eine "nicht erkannte Escape-Sequenz" für jeden Backslash:

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

Ich denke, ich muss dem Backslash entkommen? Wie mache ich das?

Antworten:


219

Sie können entweder jedes Mal einen doppelten Backslash verwenden

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

oder verwenden Sie das @ -Symbol

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

Dies half auch dabei, ein Problem mit Html.TextBoxFor zu beheben, das ich hatte. Durch die Verwendung des @ vor dem regulären Ausdruck wurde die nicht erkannte Escape-Sequenz aufgelöst, bei der der doppelte Backslash fehlgeschlagen ist.
— Joshua

26

Versuche dies:

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

Das Problem ist, dass in einer Zeichenfolge a \ein Escapezeichen ist. Mit dem @Zeichen weisen Sie den Compiler an, die Escape-Zeichen zu ignorieren.

Sie können auch mit der Flucht auskommen \:

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

4
FWIW und um Googlebot zu helfen, ist der Begriff für @ "" ein "wörtliches Zeichenfolgenliteral". Obwohl ich auch gehört habe, dass es nur als "String-Literal" bezeichnet wird, schließt dies technisch das "reguläre String-Literal" von nur "" ein. msdn.microsoft.com/en-us/library/aa691090(VS.71).aspx
— Mark Brackett


9

Wenn Ihre Zeichenfolge wie in Ihrem Beispiel ein Dateipfad ist, können Sie auch Dateipfade im Unix-Stil verwenden:

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

Die anderen Antworten bieten jedoch allgemeinere Lösungen für das Entkommen von Zeichenfolgen in C #.


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

Dies wird funktionieren oder die vorherigen Beispiele auch. @ "..." bedeutet, dass Sie alles zwischen den Anführungszeichen wörtlich behandeln, damit Sie es tun können

@"Hello
world"

Einfügen einer wörtlichen Newline. Ich bin eher altmodisch und entkomme lieber "\" mit "\\"


Aber doppelt "werden nicht wörtlich behandelt.
— Flügelspieler Sendon
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.