转义字符串中的双引号

时间:2013-01-23 13:20:44

标签: c# string double-quotes

双引号可以像这样转义:

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

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

8 个答案:

答案 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 SequencesString literals

答案 2 :(得分:15)

在C#中,您可以使用反斜杠将特殊字符添加到字符串中。 例如,要放“,你需要写”。 您使用反斜杠编写了很多字符: 带反斜杠的反斜杠:

  • \ 000 null
  • \ 010退格
  • \ 011水平标签
  • \ 012新行
  • \ 015回车
  • \ 032替换
  • \ 042双引号
  • \ 047单引号
  • \ 134反斜杠
  • \ 140 grave accent

反斜杠与其他角色

  • \ a Bell(警报)
  • \ b Backspace
  • \ f Formfeed
  • \ n新行
  • \ r回车
  • \ t水平标签
  • \ v垂直标签
  • \'单引号
  • \“双引号
  • \ Backslash
  • \?字面问号
  • \ ooo八进制表示法中的ASCII字符
  • \ x hh以十六进制表示的ASCII字符
  • \ x hhhh如果在宽字符常量或Unicode字符串文字中使用此转义序列,则以十六进制表示法表示Unicode字符。例如,WCHAR f = L'\ x4e00'或WCHAR b [] = L“一个中文字符是\ x4e00”。

答案 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 种方法可以在字符串中嵌入引号:

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

请参阅此 document 以获得详细说明。