以下是我遇到的一些标记的两个示例:
Incorrect: "<span>Some info<br /></span>"
Correct: "<span>Some info</span><br />"
Incorrect: "<span>Some other kind of info. <br /> More info</span>"
Correct: "<span>Some other kind of info. More info</span><br />"
我要做的是将每个中断分成一行,以便我可以将一行显示为表格行。目前,我进入并使用<br />
替换所有|
,以便我可以在|
上拆分。问题在于我留下了一个未公开的范围。
我在考虑这种情况,我应该做的就是将</span>
之后的<br />
的下一个实例移到<br />
之前。但是在实例中,在休息之后但是在跨度之前有更多的文本,我需要在换行之前移动整个夹头。
我对正则表达式很糟糕,所以我无法想到一个正面的正则表达式解决方案。但是常规的子串操作很好,我没有偏好。有什么想法吗?
答案 0 :(得分:3)
如果我理解正确,您需要一个像HtmlAgilityPack
这样的Html解析器var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(orghtml);
var brs = doc.DocumentNode.SelectNodes("//span/br"); //all br's in span's
foreach(var br in brs )
{
var span = br.ParentNode;
span.ParentNode.InsertAfter(HtmlAgilityPack.HtmlNode.CreateNode("<br>"), span);
br.Remove();
}
var newhtml = doc.DocumentNode.OuterHtml;
INPUT:
<span>Some info<br /></span>
<span>Some info</span><br />
<span>Some other kind of info. <br /> More info</span>
<span>Some other kind of info. More info</span><br />
输出:
<span>Some info</span><br>
<span>Some info</span><br>
<span>Some other kind of info. More info</span><br>
<span>Some other kind of info. More info</span><br>