包含反斜杠的路径字符串无法识别的转义序列


90

以下代码为每个反斜杠生成有关“无法识别的转义序列”的编译器错误:

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

我想我需要转义反斜线吗?我怎么做?

Answers:


224

每次都可以使用双反斜杠

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

或使用@符号

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

这也有助于解决我遇到的Html.TextBoxFor问题。在正则表达式之前使用@解析无法识别的转义序列,其中双反斜杠失败。
约书亚

27

试试这个:

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

问题在于,在字符串中,a\是转义字符。通过使用@符号,您可以告诉编译器忽略转义符。

您还可以通过转义\

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

4
FWIW和Googlebot的帮助者,@“”一词是“ verbatim字符串文字”。尽管我也听说过它被称为“字符串文字”,但从技术上讲,它包括“”的“常规字符串文字”。msdn.microsoft.com/zh-CN/library/aa691090(VS.71).aspx
Mark Brackett


9

如果您的字符串是文件路径(如您的示例中所示),则还可以使用Unix样式的文件路径:

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

但是其他答案对于C#中的字符串转义具有更通用的解决方案。


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

这将起作用,或者前面的示例也将起作用。@“ ...”表示按原样对待引号之间的所有内容,因此您可以

@"Hello
world"

包括文字换行符。我的学校比较老,喜欢用“ \\”转义“ \”


但双“不是字面上的处理。
边锋山顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.