web-dev-qa-db-ja.com

どのタグが含まれているかを知らずに、文字列からすべてのHTMLタグを削除するにはどうすればよいですか?

文字列から関連するすべての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](リアリティシリーズ)」

99
Rj.

次のような単純な正規表現を使用できます。

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

このソリューションには独自の欠陥があることに注意してください。詳細については、 StringのHTMLタグを削除する (特に@mehaaseのコメント)を参照してください

別の解決策は、 HTML Agility Pack を使用することです。
次のライブラリを使用して例を見つけることができます: HTMLアジリティパック-コンテンツを削除せずに不要なタグを削除しますか?

207
Bidou

Html Agility pack を使用して文字列を解析し、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;
42
ssilas777

文字列に以下のコードを使用すると、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);
4
Vinay