使用“@”在StringBuilder中插入多行字符串

时间:2012-08-08 14:45:01

标签: c# string

我有一个StringBuilder对象,并希望使用它的Append()方法将整个字符串添加到它:

enter image description here

所以我用“@”复制粘贴了这样的整个字符串,但它会出现很多错误,例如“; expected”,“Invalid Expression”<'“等等

myString.Append(@"COPY-PASTED-THAT_WHOLE-STRING");

将此字符串添加到字符串构建器对象的正确方法是什么?

谢谢。

5 个答案:

答案 0 :(得分:6)

即使字符串前缀为@,您也需要转义任何"个字符,否则它们将被解释为字符串文字的结尾。

修改

e.g。

var entity = @"<!ENTITY xsd ""http://www.w3.org/2001/XMLSchema#"">";

答案 1 :(得分:3)

要粘贴的字符串中的双引号(")需要通过替换为两个连续的双引号进行转义,如""中所示。这是一个可以使用的技巧:

  • 将您的字符串粘贴到记事本的新实例
  • 将所有双引号(")替换为两个双引号(""
  • 选择记事本中的内容并将其复制回剪贴板
  • 将其粘贴到代码/文本编辑器中的@"…"

来自C# docs

  

在逐字字符串文字中,分隔符之间的字符   是逐字解释的,唯一的例外是a   报价转义序列

答案 2 :(得分:1)

您可以使用@语法添加多行。但是你需要使用"

来逃避字符串中的""

例如

@"<Ontology xmlns=""http://www.w3.org/2002/07/owl#"""

如果你没有逃避它们,C#会将引号标记视为字符串的结尾。

答案 3 :(得分:1)

正如其他人所说,其中一个选项是使用双引号(")来转义所有双引号("")。

我喜欢这样做,因为当将XML块作为文字字符串添加时,它使代码更具可读性,是使用单引号而不是双引号。只需将XML文件放入文本编辑器中,然后使用单引号(')替换所有双引号。

另一个选择,因为你的XML文字不是那么简短,就是将它放入一个文件中并在运行时读入该文件。

答案 4 :(得分:1)

你也可以这样逃避......

@"<Ontology xmlns=\"http://www.w3.org/2002/07/owl#\""