我需要为一段html文本生成摘录,我不能只使用Substring方法,因为我可以修剪一个标记,是否有一个函数需要考虑标记,以便它跳过标记结束?
答案 0 :(得分:1)
我认为HTML Agility Pack将提供您所需的功能:
和
答案 1 :(得分:1)
没有“功能”可以做你想做的事情,你必须使用HTML解析器(例如Russ C建议的那个)并迭代所有节点。
而且,请请do not try with regular expressions(我只是在这里积极主动)。
答案 2 :(得分:0)
如ckittel所述,一个例子会有所帮助。如果我确实得到了你的问题,那就没有这样的内置功能。</ p>
根据您的需要和您正在处理的HTML类型,您可以使用简单的基于正则表达式的方法,该方法从文本中删除html标记并解码html实体:
public static string StripHTML(string HTMLText)
{
string ret = HTMLText.Replace("<br>", "\n").Replace("<br />", "\n");
Regex reg = new Regex("<[^>]+>", RegexOptions.IgnoreCase);
return HttpUtility.HtmlDecode(reg.Replace(ret, ""));
}
如果您使用以下代码测试此代码..
string longHtmlText = "<html>This is a "<b>long & bolded</b> <a href=\"http://en.wikipedia.org/wiki/HTML\">HTML</a> text</html>"";
string excerpt = StripHTML(longHtmlText);
excerpt = excerpt.Substring(0, 30) + "(..)";
..结果将是......
这是一个“长而粗体的HTML(..)
..应该回答你的问题。
请记住,正如Albireo注意到的,Regex与HTML解析完全不同......但如果您需要快速HTML剥离和修剪(对于简单的HTML文本)而没有外部组件,这段代码可能就足够了。