字符串中的双引号转义


173

双引号可以这样转义:

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

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


5
您可以使用\“ Hello World \”
Pandian 2013年

1
结果您真正想要的是什么?“”在文字字符串中变为“
。– Roel

对于C / C ++,有一个类似的问题(因为这可能是搜索引擎中最热门的问题):如何在字符串文字中使用双引号?
Peter Mortensen

Answers:


226

没有。

可以直接使用逐字字符串文字,也可以"使用反斜杠转义。

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

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


81

您可以使用反斜杠中的任何一种;

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

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

退房Escape SequencesString literals从MSDN。


18

在C#中,您可以使用反斜杠在字符串中添加特殊字符。例如,要输入“,则需要写\”。您使用反斜杠写了很多字符:带数字的反斜杠:

  • \ 000空
  • \ 010退格
  • \ 011水平制表符
  • \ 012新行
  • \ 015回车
  • \ 032替代
  • \ 042双引号
  • \ 047单引号
  • \ 134反斜杠
  • \ 140重音

反斜杠带有其他字符

  • \ a贝尔(警报)
  • \ b退格键
  • \ f换页
  • \ n新行
  • \ r回车
  • \ t水平标签
  • \ v垂直标签
  • \'单引号
  • \“双引号
  • \反斜杠
  • \?文字问号
  • \ ooo八进制表示法的ASCII字符
  • \ x hh十六进制表示法的ASCII字符
  • \ x hhhh如果在宽字符常量或Unicode字符串文字中使用此转义序列,则以十六进制表示形式的Unicode字符。例如,WCHAR f = L'\ x4e00'或WCHAR b [] = L“一个的汉字为\ x4e00”。

6

你误会了。

多余的"字符是字符串文字的一部分;它们由编译器解释为单个 "

字符串的实际值仍然是He said to me , "Hello World".How are you ?,因为您会在运行时将其打印出来。


4

请说明您的问题。你说:

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

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

@"""".Length == "\"".Length == 1
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.