C# c“替换”;人物

C# c“替换”;人物,c#,replace,special-characters,C#,Replace,Special Characters,我收到一个XML字符串,我正试图通过XmlReader解析它,我正试图去掉\“字符 我试过了 .Replace(@"\", "") .Replace("\\''", "''") .Replace("\\''", "\"") 再加上其他几种方式 有什么想法吗?像这样试试: Replace("\\\"",""); string text = GetTextFromSomewhere(); text.Replace("\\", ""); text.Replace("\"", ""); 这将用空字

我收到一个XML字符串,我正试图通过XmlReader解析它,我正试图去掉
\“
字符

我试过了

.Replace(@"\", "")
.Replace("\\''", "''")
.Replace("\\''", "\"")
再加上其他几种方式

有什么想法吗?

像这样试试:

Replace("\\\"","");
string text = GetTextFromSomewhere();
text.Replace("\\", "");
text.Replace("\"", "");
这将用空字符串替换出现的
\“

例:

这将导致:

the dog is my friend
替换(@“\”,“”)


您必须使用双双引号在一个逐字字符串中进行引用。

您是这样尝试的:

Replace("\\\"","");
string text = GetTextFromSomewhere();
text.Replace("\\", "");
text.Replace("\"", "");
??如果是这样,那就是问题所在-
Replace
不会更改原始字符串,它会返回一个新字符串,并执行替换。。。所以你想要:

string text = GetTextFromSomewhere();
text = text.Replace("\\", "").Replace("\"", "");
注意,这将替换每个反斜杠和每个双引号字符;如果您只想替换成对的“反斜杠后跟双引号”,则只需使用:

string text = GetTextFromSomewhere();
text = text.Replace("\\\"", "");

(如注释中所述,这是因为字符串在.NET中是不可变的-一旦您以某种方式获得字符串对象,该字符串将始终具有相同的内容。当然,您可以将对不同字符串的引用分配给变量,但这实际上并没有改变现有字符串的内容。)

这些字符出现在哪里?如果在记事本中检查XML数据,您会看到它们吗?或者,在调试器中检查XML数据时是否会看到它们。如果是后者,则它们只是
字符的转义字符,因此是实际XML数据的一部分

\ => \\ and " => \"

因此,在.NET Framework 4和MVC中,
替换(“\\\\”,”)
这是唯一有效的表示:

Replace(@"""","")

在任何组合中使用反斜杠都不起作用…

您还应该习惯String.Empty而不是“@VoodooChild”-不,反斜杠的数量完全正确。有关string.empty上的proof.meh,请参见我的代码示例。这是相同的区别。@kurtnelle-我更喜欢“”,使用它没有什么错。我觉得它没有字符串那么冗长。空的。谢谢!你的例子帮助了一个女人犯了一个常见的错误,但也犯了很多错误。在C#中,
字符串
是不可变的,如果您对其进行更改,例如使用
替换
方法,它将始终返回一个新字符串。还请注意,调试器在显示字符串时正在转义字符串。当然,
.Replace()
不能删除这些额外的反斜杠。