我有一个StringBuilder对象,并希望使用它的Append()方法将整个字符串添加到它:
所以我用“@”复制粘贴了这样的整个字符串,但它会出现很多错误,例如“; expected”,“Invalid Expression”<'“等等
myString.Append(@"COPY-PASTED-THAT_WHOLE-STRING");
将此字符串添加到字符串构建器对象的正确方法是什么?
谢谢。
答案 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#\""