C# 替换<;img>;与<;数学>;将减号改为问号
我想用MathML(image01.xml)替换C# 替换<;img>;与<;数学>;将减号改为问号,c#,html-agility-pack,C#,Html Agility Pack,我想用MathML(image01.xml)替换,如下所示: <math> <semantics> <mrow> <mfrac> <mrow> <mo stretchy="false">(</mo> <mi>n</mi> <mo>−</mo> &l
,如下所示:
<math>
<semantics>
<mrow>
<mfrac>
<mrow>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo>−</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>×</mo>
<mi>n</mi>
</mrow>
<mn>2</mn>
</mfrac>
</mrow>
</semantics>
</math>
替换后,嵌入的MathML不同-−代码>更改为?
更新:
newStr是(从Debug开始,负号仍然存在):
将跨度处理为:
var mo = span.SelectNode("//mo")
if (mo.innerText=="-") { mo.innerText = "?"; }
(未测试…为什么要对整个字符串调用Replace
方法?这段代码更具可读性:span.InnerHtml=newStr
为什么不显示用于newStr
的值,以及如何获取span
的值?@luk我打赌这不会有什么帮助,因为bug在保存代码时。。。这在文章中也不存在。@Luuk,newStr是“\r\n\r\n\r\n\r\n(\r\n\r\n\r\n−\r\n 1\r\n)\r\n×\r\n\r\n\r\n 2\r\n\r\n\r\n“谢谢,但是“-”符号是从docx动态解析的,硬代码可能不是一个好的解决方案,我深入研究了代码,发现“-”原来是一个“−;”在xml中,在我操作xml并使用XmlDocument保存后,−;'更改为“-”,在使用HtmlAgilityPack替换之后,它将更改为“?”。LOL,您的问题(再次)缺少该信息。“三思而后行”的另一个例子(一般来说)!
<math>
<semantics>
<mrow>
<mfrac>
<mrow>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo>?</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>×</mo>
<mi>n</mi>
</mrow>
<mn>2</mn>
</mfrac>
</mrow>
</semantics>
</math>
==============================================================
"<math>\r\n <semantics>\r\n <mrow>\r\n <mfrac>\r\n <mrow>\r\n <mo stretchy=\"false\">(</mo>\r\n <mi>n</mi>\r\n <mo>−</mo>\r\n <mn>1</mn>\r\n <mo stretchy=\"false\">)</mo>\r\n <mo>×</mo>\r\n <mi>n</mi>\r\n </mrow>\r\n <mn>2</mn>\r\n </mfrac>\r\n </mrow>\r\n </semantics>\r\n</math>"
var spans = doc.DocumentNode.SelectNodes("//span[img]");
foreach (HtmlNode span in spans)
{
// handle span here
}
var mo = span.SelectNode("//mo")
if (mo.innerText=="-") { mo.innerText = "?"; }