c#replace \“characters

我发送了一个XML字符串,我试图通过XmlReader解析,我试图去除\"字符。

我试过了

 .Replace(@"\", "") .Replace("\\''", "''") .Replace("\\''", "\"") 

加上其他几种方式。

有任何想法吗?

你是这样尝试的:

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

? 如果是这样,那就是问题 – Replace不会更改原始字符串,它会返回一个新的字符串,并执行替换…所以你想要:

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

请注意,这将替换每个反斜杠每个双引号字符; 如果您只想替换“反斜杠后跟双引号”,您只需使用:

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

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

在.NET Framework 4和MVC中,这是唯一有效的表示:

 Replace(@"""","") 

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

试试这样:

 Replace("\\\"",""); 

这将替换\"空字符串\"出现。

例如:

 string t = "\\\"the dog is my friend\\\""; t = t.Replace("\\\"",""); 

这将导致:

 the dog is my friend 

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

 \ => \\ and " => \" 

所以Replace("\\\"","")

替换(@“\”“”,“”)

你必须使用双双引号来逐字逐句地转义 双引号 。