web-dev-qa-db-fra.com

Comment supprimer toutes les balises HTML d'une chaîne sans savoir quelles balises y figurent?

Existe-t-il un moyen simple de supprimer toutes les balises HTML ou ANYTHING HTML liées à une chaîne?

Par exemple:

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;)"

Ce qui précède devrait vraiment être:

"Celebrity Championship Wrestling de Hulk Hogan [Proj # 206010] (Série Réalité)"

105
Rj.

Vous pouvez utiliser un regex simple comme ceci:

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

Sachez que cette solution a son propre défaut. Voir Supprimer les balises HTML dans String pour plus d'informations (en particulier les commentaires de @ mehaase)

Une autre solution consisterait à utiliser le HTML Agility Pack .
Vous pouvez trouver un exemple utilisant la bibliothèque ici: Pack d'agilité HTML - supprimer les balises indésirables sans supprimer le contenu?

213
Bidou

Vous pouvez analyser la chaîne en utilisant Html ​​Agility Pack et obtenir le 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;
43
ssilas777

Vous pouvez utiliser le code ci-dessous sur votre chaîne et vous obtiendrez la chaîne complète sans partie 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