我可以在逐字字符串文字中转义双引号吗?

时间:2009-12-18 15:36:10

标签: c# string escaping literals verbatim-string

在C#中的逐字字符串文字(@“foo”)中,反斜杠不被视为转义,所以做“获得双引号不起作用。有没有办法在一个双引号中逐字字符串文字?

这可以理解为不起作用:

string foo = @"this \"word\" is escaped";

6 个答案:

答案 0 :(得分:837)

使用重复的双引号。

@"this ""word"" is escaped";

输出:

this "word" is escaped

答案 1 :(得分:111)

使用双引号。

string foo = @"this ""word"" is escaped";

答案 2 :(得分:94)

要添加更多信息,您的示例将在没有@符号的情况下工作(它可以防止使用\转义),这样:

string foo = "this \"word\" is escaped!";

它可以双向工作,但我更喜欢双引号样式,以便更容易工作,例如,使用文件名(字符串中有大量的\)。

答案 3 :(得分:75)

这有助于澄清您可能遇到的任何问题:c# literals

以下是链接内容的表格:

enter image description here

答案 4 :(得分:0)

在 GitHub 中公开了一项针对 C# 语言的提案,旨在更好地支持原始字符串文字。一个有效的答案是鼓励 C# 团队向该语言添加新功能(例如三重引号 - 像 Python)。

https://github.com/dotnet/csharplang/discussions/89#discussioncomment-257343

答案 5 :(得分:0)

正如docs所说:

<块引用>

简单的转义序列...按字面解释。只有引号转义序列 ("") 不被逐字解释;它产生一个双引号。此外,在逐字内插字符串大括号转义序列({{}})的情况下,不会按字面解释;它们产生单大括号字符。