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.