在c#中的逐字字符串文字(@"foo")中,反斜杠不被视为转义,因此使用\"来获得双引号是行不通的。有没有办法在逐字串文字中获得双引号?
可以理解,这是行不通的:
string foo = @"this \"word\" is escaped";
在c#中的逐字字符串文字(@"foo")中,反斜杠不被视为转义,因此使用\"来获得双引号是行不通的。有没有办法在逐字串文字中获得双引号?
可以理解,这是行不通的:
string foo = @"this \"word\" is escaped";
当前回答
更新:与c# 11预览功能-原始字符串字面量
string foo1 = """
this "word" is escaped
""";
string foo2 = """this "word" is escaped""";
历史:
在GitHub中有一个关于c#语言更好地支持原始字符串文字的提议。一个有效的答案是,鼓励c#团队为语言添加一个新特性(比如像Python那样的三重引号)。
看到https://github.com/dotnet/csharplang/discussions/89 discussioncomment - 257343
其他回答
使用重复的双引号。
@"this ""word"" is escaped";
输出:
this "word" is escaped
使用双引号。
string foo = @"this ""word"" is escaped";
更新:与c# 11预览功能-原始字符串字面量
string foo1 = """
this "word" is escaped
""";
string foo2 = """this "word" is escaped""";
历史:
在GitHub中有一个关于c#语言更好地支持原始字符串文字的提议。一个有效的答案是,鼓励c#团队为语言添加一个新特性(比如像Python那样的三重引号)。
看到https://github.com/dotnet/csharplang/discussions/89 discussioncomment - 257343
这应该有助于澄清您可能存在的任何问题:c#字面量
下面是链接内容的表格:
常规的文字 逐字直译 生成的字符串 “你好” @“你好” 你好 “反斜杠:\ \” @“反斜杠:\” 反斜杠:\ “引用:\”“ @“引用:“”“ 引用:“ “CRLF: \ r \ nPost CRLF” @“CRLF: CRLF” CRLF: Post CRLF
为了添加更多的信息,你的例子在没有@符号的情况下也能正常工作(它可以防止使用\转义),如下所示:
string foo = "this \"word\" is escaped!";
它可以双向工作,但我更喜欢双引号风格,因为它更容易工作,例如,文件名(字符串中有很多\)。