如何截断HTML字符串而不留下格式错误?

时间:2010-02-24 08:31:19

标签: c#

我必须在整个html字符串中显示前N个(例如50或100个)字符。我必须显示格式良好的html。如果我应用简单的子字符串,将得到一个malformated html字符串 例如。

示例字符串:"<html><body><a href="http://foo.com">foo</a></body></html>"

trucated string:"<html><body><a href="http://foo.com">foo<"

这会让我感觉格式错误:(

关于如何实现这一点的任何想法??

3 个答案:

答案 0 :(得分:3)

您可以尝试使用HTML Agility Pack - 它会为您解析HTML,但您需要弄清楚如何自己生成截断版本。它应该会让事情变得更容易。

答案 1 :(得分:1)

将HTML解析为DOM树。从最深/最内层的元素开始,

  • 删除最内层节点的内容,如果没有内容,则删除该节点
  • 检查字符串长度。

冲洗,起泡,重复。

如果您想要的长度足够小,这可能会将您的字符串截断为空字符串。

对于额外的踢法,您可以尝试删除节点的属性

答案 2 :(得分:0)

我见过一些论坛系统只是追加一个&lt; / b&gt;&lt; / u&gt;&lt; / i&gt;&lt; / s&gt;在每一个帖子之后。你可以用类似的方式来解决这个问题。

当然,它的丑陋并不能解决那个尾随&lt;

这是迄今为止最简单的方法。更好的方法实际上是生成一个树,然后......在满足要求之前关闭节点。