【发布时间】:2011-06-08 02:08:57
【问题描述】:
我收到了一个 XML 字符串,我试图通过 XmlReader 对其进行解析,并且我试图去除 \" 字符。
我试过了
.Replace(@"\", "")
.Replace("\\''", "''")
.Replace("\\''", "\"")
加上其他几种方式。
有什么想法吗?
【问题讨论】:
标签: c# replace special-characters
我收到了一个 XML 字符串,我试图通过 XmlReader 对其进行解析,并且我试图去除 \" 字符。
我试过了
.Replace(@"\", "")
.Replace("\\''", "''")
.Replace("\\''", "\"")
加上其他几种方式。
有什么想法吗?
【问题讨论】:
标签: c# replace special-characters
你是这样尝试的吗:
string text = GetTextFromSomewhere();
text.Replace("\\", "");
text.Replace("\"", "");
?如果是这样,那就是问题所在 - Replace 不会更改 original 字符串,它会返回一个 new 字符串并执行替换......所以你想要:
string text = GetTextFromSomewhere();
text = text.Replace("\\", "").Replace("\"", "");
请注意,这将替换每个反斜杠和每个双引号字符;如果您只想替换 pair “反斜杠后跟双引号”,您只需使用:
string text = GetTextFromSomewhere();
text = text.Replace("\\\"", "");
(正如 cmets 中提到的,这是因为字符串在 .NET 中是不可变的 - 一旦您以某种方式获得了一个字符串对象,该字符串将始终具有相同的内容。您可以分配一个对 不同的引用 字符串当然是一个变量,但这实际上并没有改变现有字符串的内容。)
【讨论】:
string 是不可变的,如果您对其进行更改,例如使用 Replace 方法,它将始终返回一个新字符串。
.Replace() 删除。
在 .NET Framework 4 和 MVC 中,这是唯一有效的表示:
Replace(@"""","")
在任何组合中使用反斜杠都不起作用...
【讨论】:
试试这样:
Replace("\\\"","");
这会将出现的\" 替换为空字符串。
例如:
string t = "\\\"the dog is my friend\\\"";
t = t.Replace("\\\"","");
这将导致:
the dog is my friend
【讨论】:
\ => \\ and " => \"
所以Replace("\\\"","")
【讨论】:
这些字符出现在哪里?如果您检查例如记事本中的 XML 数据,您会看到它们吗?或者您在调试器中检查 XML 数据时是否看到它们。如果是后者,它们只是 " 字符的转义字符,因此是实际 XML 数据的一部分。
【讨论】:
替换(@"\""", "")
您必须在逐字字符串中使用双双引号 escape double-quotes。
【讨论】: