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

kdt*_*kdt 522 c# string escaping literals verbatim-string

在C#中的逐字字符串文字(@"foo")中,反斜杠不被视为转义,因此执行"获取双引号"不起作用.有没有办法在逐字字符串文字中获得双引号?

这可以理解为不起作用:

string foo = @"this \"word\" is escaped";
Run Code Online (Sandbox Code Playgroud)

Myl*_*les 859

使用重复的双引号.

@"this ""word"" is escaped";
Run Code Online (Sandbox Code Playgroud)

输出:

this "word" is escaped
Run Code Online (Sandbox Code Playgroud)

  • 也可以将其与字符串插值结合使用:`$ @“ this”“ {wordVar}”“被转义”;`。 (2认同)

Bra*_*don 114

使用双引号.

string foo = @"this ""word"" is escaped";
Run Code Online (Sandbox Code Playgroud)


j.a*_*van 95

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

string foo = "this \"word\" is escaped!";
Run Code Online (Sandbox Code Playgroud)

它会同时工作,但我更喜欢双引号样式,因为它更容易工作,例如,文件名(字符串中有很多\).


小智 80

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

以下是链接内容的表格:

在此输入图像描述


Tod*_*odd 8

更新:使用 C# 11 预览功能 - 原始字符串文字

string foo1 = """
   this "word" is escaped
   """;

string foo2 = """this "word" is escaped""";
Run Code Online (Sandbox Code Playgroud)

历史:

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

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