从HTML字符串获取纯文本字符串的最佳方法是什么?从.NET中以HTML格式获取纯文本
public string GetPlainText(string htmlString)
{
// any .NET built in utility?
}
在此先感谢
从HTML字符串获取纯文本字符串的最佳方法是什么?从.NET中以HTML格式获取纯文本
public string GetPlainText(string htmlString)
{
// any .NET built in utility?
}
在此先感谢
有公用事业没有内置据我所知,但根据您的需求,您可以使用正则表达式去掉所有的标签:
string htmlString = @"<p>I'm HTML!</p>";
Regex.Replace(htmlString, @"<(.|\n)*?>", "");
/我去隐藏 – 2011-05-03 13:52:07
检查这个史诗般的问题http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml- self-contained-tags – Andrey 2011-05-03 13:57:11
@Andrey哈哈这是一个非常棒的接受答案。幸运的是,OP没有说明确切的需求,也没有定义HTML字符串,因此它应该能够捕捉大多数实际的HTML情况,而不是XHTML。 – 2011-05-03 14:00:08
没有.NET内置的方法来做到这一点。但是,就像@rudi_visser指出的那样,它可以用正则表达式完成。
如果您需要删除的不仅仅是更多的标签(即转&ampacirc;到â),你可以使用更详尽的解决方案,如发现here。
框架中没有内置的解决方案。
如果您需要解析HTML,我使用名为HTML Agility Pack的库提供了很好的体验。
它分析一个HTML文件并提供DOM的访问权限,类似于XML类。
你可以使用MSHTML,它可以相当宽容;岭
//using microsoft.mshtml
HTMLDocument htmldoc = new HTMLDocument();
IHTMLDocument2 htmldoc2 = (IHTMLDocument2)htmldoc;
htmldoc2.write(new object[] { "<p>Plateau <i>of<i> <b>Leng</b><hr /><b erp=\"arp\">2 sugars please</b> <xxx>what? & who?" });
string txt = htmldoc2.body.outerText;
高原2个糖讨好什么? &谁?
工程就像一个魅力!应该是被接受的答案。请注意,您需要首先添加对“Microsoft.mshtml.dll”的引用。 – 2016-07-05 14:09:36
您确定此方法对来自不受信任来源的HTML安全吗? HTMLDocument.Write()是否执行传递的脚本? – 2016-11-16 17:20:12
这个答案比接受的答案(只使用简单的正则表达式去除标签)要稳健得多,而且对于任何合理复杂的页面来说可能都是必要的。 – 2016-11-16 22:00:27
就我个人而言,我发现正则表达式和HttpUtility的组合是最好的和最短的解决方案。
Return HttpUtility.HtmlDecode(
Regex.Replace(HtmlString, "<(.|\n)*?>", "")
)
这将删除所有的标签,然后解码任何类似<
或>
的群众演员,你有什么用纯文本意思? – slandau 2011-05-03 13:48:38
@slandau:我想从HTML输入中输出可读的文本。我不知道是否有额外的删除标签... – 2011-05-03 13:52:11