从HTML字符串中获取纯文本字符串的最佳方法是什么?
public string GetPlainText(string htmlString)
{
// any .NET built in utility?
}
提前致谢
答案 0 :(得分:37)
您可以使用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糖的高原请问什么? &安培;谁?
答案 1 :(得分:23)
据我所知,没有内置实用程序,但根据您的要求,您可以使用正则表达式删除所有标记:
string htmlString = @"<p>I'm HTML!</p>";
Regex.Replace(htmlString, @"<(.|\n)*?>", "");
答案 2 :(得分:5)
框架中没有内置解决方案。
如果您需要解析HTML,我使用名为HTML Agility Pack的库获得了很好的体验 它解析HTML文件并通过DOM提供对它的访问,类似于XML类。
答案 3 :(得分:2)
就个人而言,我发现正则表达式和HttpUtility的组合是最好和最短的解决方案。
Return HttpUtility.HtmlDecode(
Regex.Replace(HtmlString, "<(.|\n)*?>", "")
)
这将删除所有标记,然后对<
或>
答案 4 :(得分:1)
没有.NET内置方法来执行此操作。但是,正如@rudi_visser指出的那样,它可以用正则表达式来完成。
如果您需要删除的不仅仅是标记(例如,将&amp; acirc; 转换为â),您可以使用更详细的解决方案,例如找到{ {3}}
答案 5 :(得分:0)
Erick Petrucelli的答案在Report Builder中为我工作。必须从c#更改为VB,以便报表构建器可以理解。 谢谢