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

Kje*_*sen 82 .net c# string escaping path

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

string foo = "D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Run Code Online (Sandbox Code Playgroud)

我想我需要逃避反斜杠?我怎么做?

Bra*_*don 208

您可以每次使用双反斜杠

string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
Run Code Online (Sandbox Code Playgroud)

或使用@符号

string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Run Code Online (Sandbox Code Playgroud)

  • 嗯.一个琐碎问题的四个答案,只有一个完全正确. (6认同)

Jos*_*osh 25

试试这个:

string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Run Code Online (Sandbox Code Playgroud)

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

你也可以通过以下方式逃脱\:

string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
Run Code Online (Sandbox Code Playgroud)

  • FWIW和帮助Googlebot,@""的用语是"逐字字符串文字".虽然我也听说它只是"字符串文字",但在技术上包括"常规字符串文字"只是"".http://msdn.microsoft.com/en-us/library/aa691090(VS.71).aspx (4认同)

Pio*_*pla 12

var foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";
Run Code Online (Sandbox Code Playgroud)


Sco*_*ein 9

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

string foo = "D:/Projects/Some/Kind/Of/Pathproblem/wuhoo.xml";
Run Code Online (Sandbox Code Playgroud)

但其他答案有更普遍的解决方案来解决C#中的字符串转义问题.


Bob*_*man 5

string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";
Run Code Online (Sandbox Code Playgroud)

这将起作用,或者前面的例子也将起作用.@"..."意味着直接处理引号之间的所有内容,所以你可以这样做

@"Hello
world"
Run Code Online (Sandbox Code Playgroud)

包含文字换行符.我更老了,更喜欢用"\\"来逃避"\"