双引号可以像这样转义:

string test = @"He said to me, ""Hello World"". How are you?";

但这涉及到向字符串中添加字符“。是否有c#函数或其他方法来转义双引号,以便不需要更改字符串?


当前回答

在c#中,至少有四种方法可以在字符串中嵌入引号:

带反斜杠的转义引号 字符串前面加@并使用双引号 使用对应的ASCII字符 使用十六进制Unicode字符

详细说明请参考本文件。

其他回答

No.

要么像您所拥有的那样使用逐字串字面量,要么转义“using反斜杠”。

string test = "He said to me, \"Hello World\" . How are you?";

在这两种情况下,字符串都没有改变——其中只有一个转义的“。这只是告诉c#字符是字符串的一部分,而不是字符串结束符的一种方式。

你误解了逃跑。

额外的"字符是字符串字面量的一部分;它们被编译器解释为单个”。

你的字符串的实际值仍然是他对我说,“Hello World”。你好吗?,就像你在运行时打印它时看到的那样。

c# 6中值得一提的另一件事是插值字符串可以与@一起使用。

例子:

string helloWorld = @"""Hello World""";
string test = $"He said to me, {helloWorld}. How are you?";

Or

string helloWorld = "Hello World";
string test = $@"He said to me, ""{helloWorld}"". How are you?";

在这里检查运行代码!

在这里查看插值的参考!

你可以用两种方式使用反斜杠:

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?";

这里是一个演示。

仍然是你的弦的一部分。

你可以查看Jon Skeet的Strings in c# and . net文章了解更多信息。

请解释你的问题。你说:

但这涉及到向字符串中添加字符“。

这是什么问题?你不能输入string foo = " foo "bar"";,因为这会引发编译错误。至于添加部分,在字符串大小方面,这是不正确的:

@"""".Length == 1

"\"".Length == 1