双引号可以像这样转义:
string test = @"He said to me, ""Hello World"". How are you?";
但这涉及到字符串中添加字符"
。是否有C#函数或其他方法来转义双引号,以便不需要更改字符串?
答案 0 :(得分:170)
没有
要么使用逐字字符串文字,要么使用反斜杠转义"
。
string test = "He said to me, \"Hello World\" . How are you?";
在任何一种情况下,字符串都没有改变 - 其中只有一个转义 "
。这只是告诉C#该字符是字符串的一部分而不是字符串终止符的方法。
答案 1 :(得分:57)
您可以使用反斜杠;
string str = "He said to me, \"Hello World\". How are you?";
打印;
He said to me, "Hello World". How are you?
与;的打印完全相同;
string str = @"He said to me, ""Hello World"". How are you?";
这是DEMO
。
"
仍然是您字符串的一部分。
从 MSDN 中查看Escape Sequences
和String literals
。
答案 2 :(得分:15)
在C#中,您可以使用反斜杠将特殊字符添加到字符串中。 例如,要放“,你需要写”。 您使用反斜杠编写了很多字符: 带反斜杠的反斜杠:
反斜杠与其他角色
答案 3 :(得分:6)
你误解了逃避。
额外的"
个字符是字符串文字的一部分;它们被编译器解释为单 "
。
您的字符串的实际值仍为He said to me , "Hello World".How are you ?
,因为您将看到是否在运行时打印它。
答案 4 :(得分:5)
请解释一下你的问题。你说:
但这涉及到字符串添加字符。
那是什么问题?您不能键入string foo = "Foo"bar"";
,因为它会调用编译错误。至于添加部分,在字符串大小的术语中是不正确的:
@"""".Length == "\"".Length == 1
答案 5 :(得分:2)
C# 6 中值得一提的另一件事 $ 内插字符串可以与 @ 一起使用。
示例:
string helloWorld = @"""Hello World""";
string test = $"He said to me, {helloWorld}. How are you?";
或
string helloWorld = "Hello World";
string test = $@"He said to me, ""{helloWorld}"". How are you?";
检查运行代码here!
可以查看对插值here的引用!
答案 6 :(得分:1)
一种解决方案是增加对csharp语言的支持,以使“”不是唯一用于字符串的方案。
对于C#语言的另一个字符串终止符-我是ES6的反推爱好者。
string test = `He said to me, "Hello World". How are you?`;
但是,Markdown中的加倍想法可能会更好:
string test = ""He said to me, "Hello World". How are you?"";
该代码在本文发布之日不起作用。这篇文章是一个解决方案,访问此问答的访问者可以跳入这张Csharplank C#票证并对其进行投票-https://github.com/dotnet/csharplang/discussions/3917
答案 7 :(得分:0)
在 C# 中,至少有 4 种方法可以在字符串中嵌入引号:
请参阅此 document 以获得详细说明。