170

有什么简单的方法可以从字符串中删除所有 HTML 标签或任何与 HTML 相关的内容吗?

例如:

string title = "<b> Hulk Hogan's Celebrity Championship Wrestling &nbsp;&nbsp;&nbsp;<font color=\"#228b22\">[Proj # 206010]</font></b>&nbsp;&nbsp;&nbsp; (Reality Series, &nbsp;)"

上面真的应该是:

“绿巨人霍根的名人冠军摔跤 [项目#206010](现实系列)”

4

3 回答 3

331

您可以使用这样的简单正则表达式:

public static string StripHTML(string input)
{
   return Regex.Replace(input, "<.*?>", String.Empty);
}

请注意,此解决方案有其自身的缺陷。有关更多信息,请参阅删除字符串中的 HTML 标记(尤其是 'Mark E. Haase'/@mehaase 的注释)

另一种解决方案是使用HTML Agility Pack
您可以在此处找到使用该库的示例:HTML 敏捷包 - 删除不需要的标签而不删除内容?

于 2013-08-09T19:14:45.543 回答
76

您可以使用Html Agility 包解析字符串并获取 InnerText。

    HtmlDocument htmlDoc = new HtmlDocument();
    htmlDoc.LoadHtml(@"<b> Hulk Hogan's Celebrity Championship Wrestling &nbsp;&nbsp;&nbsp;<font color=\"#228b22\">[Proj # 206010]</font></b>&nbsp;&nbsp;&nbsp; (Reality Series, &nbsp;)");
    string result = htmlDoc.DocumentNode.InnerText;
于 2013-08-09T19:21:52.887 回答
5

您可以在字符串上使用以下代码,您将获得不带 html 部分的完整字符串。

string title = "<b> Hulk Hogan's Celebrity Championship Wrestling &nbsp;&nbsp;&nbsp;<font color=\"#228b22\">[Proj # 206010]</font></b>&nbsp;&nbsp;&nbsp; (Reality Series, &nbsp;)".Replace("&nbsp;",string.Empty);            
        string s = Regex.Replace(title, "<.*?>", String.Empty);
于 2013-08-09T20:50:13.697 回答