双引号可以像这样转义:
string test = @"He said to me, ""Hello World"". How are you?";
但这涉及到向字符串中添加字符“。是否有c#函数或其他方法来转义双引号,以便不需要更改字符串?
双引号可以像这样转义:
string test = @"He said to me, ""Hello World"". How are you?";
但这涉及到向字符串中添加字符“。是否有c#函数或其他方法来转义双引号,以便不需要更改字符串?
当前回答
请解释你的问题。你说:
但这涉及到向字符串中添加字符“。
这是什么问题?你不能输入string foo = " foo "bar"";,因为这会引发编译错误。至于添加部分,在字符串大小方面,这是不正确的:
@"""".Length == 1
"\"".Length == 1
其他回答
2022年更新:以前的答案是“不”。然而,c# 11引入了一个叫做“原始字符串字面量”的新特性。引用微软文档:
从c# 11开始,您可以使用原始字符串字面值更容易地创建多行字符串,或使用任何需要转义序列的字符。原始字符串字面量不需要使用转义序列。您可以编写字符串,包括空格格式,以您希望它在输出中出现的方式。”
来源:https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/strings/ raw-string-literals
示例:所以使用原来的例子,你可以这样做(注意原始字符串文字总是以三个或更多引号开头):
string testSingleLine = """He said to me, "Hello World". How are you?""";
string testMultiLine = """
He said to me, "Hello World". How are you?
""";
你误解了逃跑。
额外的"字符是字符串字面量的一部分;它们被编译器解释为单个”。
你的字符串的实际值仍然是他对我说,“Hello World”。你好吗?,就像你在运行时打印它时看到的那样。
你可以用两种方式使用反斜杠:
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
No.
要么像您所拥有的那样使用逐字串字面量,要么转义“using反斜杠”。
string test = "He said to me, \"Hello World\" . How are you?";
在这两种情况下,字符串都没有改变——其中只有一个转义的“。这只是告诉c#字符是字符串的一部分,而不是字符串结束符的一种方式。