我有一个包含相当多XML的字符串,它实际上是描述word文档的xml(document.xml)。我想简单地用一个空字符串替换字符串的一部分,有效地将其从字符串中删除。这听起来很直接,但我没有得到我期望的结果。
以下是一些XML的内容,这只是前10行:
<w:body xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:p w:rsidR="00CB3A3E" w:rsidP="00257CF7" w:rsidRDefault="008C1E91">
<w:pPr>
<w:pStyle w:val="Heading-Title" />
</w:pPr>
<w:r>
<w:t>References</w:t>
</w:r>
</w:p>
<w:sdt>
正如我所说,这是一个字符串。我只是尝试用空字符串替换<w:t>References</w:t>
。我是这样做的:
//xmlBody is the string that is holding the xml
xmlBody.Replace("<w:t>References</w:t>", " ");
这不起作用,当我这样做时,字符串不会改变。我究竟做错了什么?非常感谢任何建议!
答案 0 :(得分:3)
xmlBody = xmlBody.Replace("<w:t>References</w:t>", "");
Replace函数不会更改源字符串;它返回一个包含所做更改的新字符串。实际上,C#字符串无法更改。如果您查看documentation,则表示它们是不可变的。
答案 1 :(得分:3)
在C#中,字符串不可变 - 一旦创建,就无法更改。 Replace
返回一个新的字符串实例。因此,您需要捕获其返回值:
xmlBody = xmlBody.Replace("<w:t>References</w:t>", " ");
作为旁注,用正则表达式解析基于XML的字符串并不是一个好习惯,因为它太脆弱了。考虑使用XDocument
或其他类似内容删除您所追求的元素。
答案 2 :(得分:2)
string.replace返回一个新字符串,它不会更改原始字符串
试
xmlBody = xmlBody.Replace("<w:t>References</w:t>", " ");
答案 3 :(得分:1)
替换不是内联替换...它会返回一个替换的新字符串。