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

Posted

技术标签:

【中文标题】包含反斜杠的路径字符串无法识别的转义序列【英文标题】:Unrecognized escape sequence for path string containing backslashes 【发布时间】:2010-11-21 03:10:14 【问题描述】:

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

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

我想我需要转义反斜杠?我该怎么做?

【问题讨论】:

【参考方案1】:

您可以每次使用双反斜杠

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

或使用@符号

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

【讨论】:

这也有助于解决我遇到的 html.TextBoxFor 问题。在正则表达式解析 Unrecognized 转义序列之前使用 @ 会导致双反斜杠失败。【参考方案2】:

试试这个:

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

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

你也可以通过转义\

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

【讨论】:

FWIW 并且为了帮助 Googlebot,@"" 的术语是“逐字字符串文字”。虽然我也听说它被称为“字符串文字”,但从技术上讲,它包括“”的“常规字符串文字”。 msdn.microsoft.com/en-us/library/aa691090(VS.71).aspx【参考方案3】:
var foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

【讨论】:

在一个小音符上,一个 " 然后像 "" 一样被转义【参考方案4】:

如果您的字符串是文件路径,如您的示例所示,您还可以使用 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"

包含文字换行符。我更老派,更喜欢用“\\”转义“\”

【讨论】:

但是 double " 不是字面意思。

以上是关于包含反斜杠的路径字符串无法识别的转义序列的主要内容,如果未能解决你的问题,请参考以下文章

kotlin正则表达式中无法识别的反斜杠转义

将文字反斜杠后跟一个字符转换为相应的转义序列

序列化包含转义(反斜杠和双引号)的 JSON 字符串 Swift 返回格式错误的对象

Oracle 将 "'SParis2" 的文本解析为字符串文字,然后找到 S 将其视为无法识别的 SQL 转义序列

NSJSONSerialization 包含正斜杠的字符串序列化 / 和 HTML 被错误地转义

前后端json序列化反序列化反斜杠无法正常传递