获取HTML内容的前100个字符而不剥离标记

Arm*_*est 5 html c# asp.net

关于如何去除html标签有很多问题,但关于它们的函数/方法并不多.

这是情况.我有一个500字符的消息摘要(包括html标签),但我只想要前100个字符.问题是,如果我截断消息,它可能在html标签的中间...这会弄乱一些东西.

假设html是这样的:

<div class="bd">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. <br/>
 <br/>Some Dates: April 30 - May 2, 2010 <br/>
 <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. <em>Duis aute irure dolor in reprehenderit</em> in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. <br/>
 </p>
 For more information about Lorem Ipsum doemdloe, visit: <br/>
 <a href="http://www.somesite.com" title="Some Conference">Some text link</a><br/> 
</div>
Run Code Online (Sandbox Code Playgroud)

我怎么能拿到前100个字左右?(虽然理想情况下,这将是"内容"的第一个大约100个字符(在html标签之间)

我假设最好的方法是做一个递归算法,跟踪html标签并追加任何会被截断的标签,但这可能不是最好的方法.

我的第一个想法是使用递归来计算嵌套标签,当我们达到100个字符时,查找下一个"<"然后使用递归来编写从那里需要的结束html标签.

这样做的原因是对现有文章做一个简短的总结,而不要求用户返回并提供所有文章的摘要.如果可能的话,我想保留html格式.

注意:请忽略html不是完全语义的.这是我必须从我的WYSIWYG处理的.

编辑:

我添加了一个潜在的解决方案(这似乎有效)我认为其他人也会遇到这个问题.我不确定它是最好的...而且它可能不完全健壮(事实上,我知道它不是),但我很感激任何反馈

Gra*_*rdx 1

我的建议是找到一个 HTML 友好的遍历器(一个允许您像 XML 一样遍历 HTML 的遍历器),然后从开头标签开始忽略标签本身,只计算标签中的数据。将其计入您的限制,然后一旦达到限制,就关闭每个标签(我想不出任何不只是/无论什么标签的标签)。

这应该工作得相当好并且相当接近您正在寻找的东西。

它完全脱离了 ol'noggin 的顶部,所以我假设会有一些棘手的部分,例如显示的属性值(例如链接标记值)。