在 C# 中的逐字字符串文字 (@"foo") 中,反斜杠不被视为转义,因此使用 \" 来获取双引号是行不通的。有没有办法在逐字字符串文字中获取双引号?
这可以理解是行不通的:
string foo = @"this \"word\" is escaped";
在 C# 中的逐字字符串文字 (@"foo") 中,反斜杠不被视为转义,因此使用 \" 来获取双引号是行不通的。有没有办法在逐字字符串文字中获取双引号?
这可以理解是行不通的:
string foo = @"this \"word\" is escaped";
使用重复的双引号。
@"this ""word"" is escaped";
输出:
this "word" is escaped
使用双引号。
string foo = @"this ""word"" is escaped";
要添加更多信息,您的示例将在没有@
符号的情况下工作(它可以防止使用 \ 转义),这样:
string foo = "this \"word\" is escaped!";
它可以双向工作,但我更喜欢双引号样式,因为它更容易工作,例如,使用文件名(字符串中有很多 \)。
这应该有助于解决您可能遇到的任何问题:C# literals
这是来自链接内容的表格:
正则字面量 逐字逐句 结果字符串 "Hello"
@"Hello"
Hello
"Backslash: \\"
@"Backslash: \"
Backslash: \
"Quote: \""
@"Quote: """
Quote: "
"CRLF:\r\nPost CRLF"
@"CRLF:
Post CRLF"CRLF:
Post CRLF
GitHub 上有一个关于 C# 语言的提案,关于更好地支持原始字符串文字。一个有效的答案是鼓励 C# 团队向该语言添加新功能(例如三引号 - 像 Python)。
见https://github.com/dotnet/csharplang/discussions/89#discussioncomment-257343
正如文档所说:
简单的转义序列......按字面意思解释。只有引号转义序列 (
""
) 不会按字面意思解释;它产生一个双引号。此外,在逐字插入字符串大括号转义序列({{
和}}
)的情况下,不会按字面解释;他们产生单大括号字符。