246

双引号可以像这样转义:

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

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

4

7 回答 7

305

不。

要么像你一样使用逐字字符串文字,要么"使用反斜杠转义。

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

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

于 2013-01-23T13:21:55.410 回答
126

您可以使用任何一种方式使用反斜杠:

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.

"仍然是您字符串的一部分。

您可以查看 Jon Skeet 的C# 和 .NET 中的字符串文章以获取更多信息。

于 2013-01-23T13:23:27.783 回答
22

在 C# 中,您可以使用反斜杠将特殊字符放入字符串。例如,要放置",您需要编写\"。您使用反斜杠编写了很多字符:

反斜杠与其他字符

  \0 nul character
  \a Bell (alert)
  \b Backspace
  \f Formfeed
  \n New line
  \r Carriage return
  \t Horizontal tab
  \v Vertical tab
  \' Single quotation mark
  \" Double quotation mark
  \\ Backslash

用数字替换任何字符:

  \xh to \xhhhh, or \uhhhh - Unicode character in hexadecimal notation (\x has variable digits, \u has 4 digits)
  \Uhhhhhhhh - Unicode surrogate pair (8 hex digits, 2 characters)
于 2013-01-23T13:42:08.067 回答
8

你误会了逃跑。

额外的"字符是字符串文字的一部分;它们被编译器解释为单个 ".

你的字符串的实际值仍然是He said to me, "Hello World". How are you?,如果你在运行时打印它,你会看到。

于 2013-01-23T13:22:02.820 回答
8

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

在此处检查运行代码!

在此处查看对插值的参考!

于 2021-05-14T10:31:49.913 回答
6

请解释你的问题。你说:

但这涉及将字符 " 添加到字符串中。

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

@"""".Length == 1

"\"".Length == 1
于 2013-01-23T13:26:48.173 回答
0

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

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

详细说明请参考本文档

于 2021-02-03T03:22:51.773 回答