如何修改此字符串以纠正错误的格式?

时间:2014-01-18 21:45:18

标签: c# regex substring

以下是我遇到的一些标记的两个示例:

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 />之前。但是在实例中,在休息之后但是在跨度之前有更多的文本,我需要在换行之前移动整个夹头。

我对正则表达式很糟糕,所以我无法想到一个正面的正则表达式解决方案。但是常规的子串操作很好,我没有偏好。有什么想法吗?

1 个答案:

答案 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>