Existe-t-il un moyen simple de supprimer toutes les balises HTML ou TOUT HTML lié d'une chaîne?
Par exemple:
string title = "<b> Hulk Hogan's Celebrity Championship Wrestling <font color=\"#228b22\">[Proj # 206010]</font></b> (Reality Series, )"
Ce qui précède devrait vraiment être:
«Lutte de championnat de célébrité de Hulk Hogan [Proj # 206010] (série de réalité)»
xidel -s input -e '/'
.Réponses:
Vous pouvez utiliser une simple expression régulière comme celle-ci:
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 serait d'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?
la source
< 10 <b>
et</b>
sont tous les deux dépouillés.Vous pouvez analyser la chaîne à l'aide du pack Html Agility et obtenir l'InnerText.
la source
InnerText
solution car elle supprime toutes les balises. Mais ... il laisse derrière lui
et commente aussi des tags tels que<!-- xxx -->
ceux qui l'entourentv:shapetype
,v:shape
ouv:imagedata
avec[if gte vml 1]
ou[if !vml]
c'est une entité html, pas une balise, donc une solution pour supprimer cela pourrait êtreresult = WebUtility.HtmlDecode(result);
et pour supprimer les nœuds de commentaires, en utilisant le Html Agility Pack:htmlDoc.DocumentNode.SelectNodes("//comment()")?.ForEach(c=> c.Remove());
juste avant de faireresult = htmlDoc.DocumentNode.InnerText;
Vous pouvez utiliser le code ci-dessous sur votre chaîne et vous obtiendrez la chaîne complète sans partie html.
la source