c# - 如何从字符串中删除所有HTML标记而不知道其中包含哪些标记?

这个问题在这里已有答案:

  • HTML敏捷包 - 删除不需要的标签而不删除内容?                                     5个答案

有没有简单的方法来删除所有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;)"

以上应该是:

&#34; Hulk Hogan的名人冠军摔跤[Proj#206010](现实系列赛)&#34;

Rj. asked 2019-08-13T07:39:42Z
3个解决方案
191 votes

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

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

请注意,此解决方案有其自身的缺陷。 有关更多信息,请参阅删除String中的HTML标记(尤其是@mehaase的注释)

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

Bidou answered 2019-08-13T07:40:18Z
39 votes

您可以使用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;
ssilas777 answered 2019-08-13T07:40:42Z
4 votes

您可以在字符串上使用以下代码,您将获得没有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);
Vinay answered 2019-08-13T07:41:06Z
translate from https://stackoverflow.com:/questions/18153998/how-do-i-remove-all-html-tags-from-a-string-without-knowing-which-tags-are-in-it