Supprimer les balises HTML de la chaîne, y compris & nbsp, dans C #

Comment puis-je supprimer toutes les balises HTML, y compris & nbsp en utilisant regex en C #. Ma chaîne ressemble à

"
hello








                                                      













"

Si vous ne pouvez pas utiliser une solution orientée par parsingur HTML pour filtrer les balises, voici une simple expression rationnelle.

 ssortingng noHTML = Regex.Replace(inputHTML, @"<[^>]+>| ", "").Trim(); 

Vous devriez idéalement faire un autre passage à travers un filtre regex qui prend en charge plusieurs espaces comme

 ssortingng noHTMLNormalised = Regex.Replace(noHTML, @"\s{2,}", " "); 

J’ai pris le code de @Ravi Thapliyal et j’ai mis au point une méthode: c’est simple et peut ne pas tout nettoyer, mais jusqu’à présent, il fait ce dont j’ai besoin.

 public static ssortingng ScrubHtml(ssortingng value) { var step1 = Regex.Replace(value, @"<[^>]+>| ", "").Trim(); var step2 = Regex.Replace(step1, @"\s{2,}", " "); return step2; } 

J’utilise cette fonction depuis un moment. Supprime à peu près tout le HTML malpropre que vous pouvez lui lancer et laisse le texte intact.

  private static readonly Regex _tags_ = new Regex(@"<[^>]+?>", RegexOptions.Multiline | RegexOptions.Comstackd); //add characters that are should not be removed to this regex private static readonly Regex _notOkCharacter_ = new Regex(@"[^\w;&#@.:/\\?=|%!() -]", RegexOptions.Comstackd); public static Ssortingng UnHtml(Ssortingng html) { html = HttpUtility.UrlDecode(html); html = HttpUtility.HtmlDecode(html); html = RemoveTag(html, ""); html = RemoveTag(html, " 
 var noHtml = Regex.Replace(inputHTML, @"<[^>]*(>|$)| |‌|»|«", ssortingng.Empty).Trim(); 

ce:

 (<.+?> |  ) 

correspondra à n’importe quel tag ou  

 ssortingng regex = @"(<.+?>| )"; var x = Regex.Replace(originalSsortingng, regex, "").Trim(); 

alors x = hello

Le HTML est sous sa forme basique juste XML. Vous pouvez parsingr votre texte dans un object XmlDocument et, sur l’élément racine, appeler InnerText pour extraire le texte. Cela dépouillera tous les tages HTML sous n’importe quelle forme et traitera également les caractères spéciaux comme & lt; & nbsp; tout en un.

La désinfection d’un document HTML implique beaucoup de choses délicates. Ce paquet peut être utile: https://github.com/mganss/HtmlSanitizer

 (<([^>]+)>| ) 

Vous pouvez le tester ici: https://regex101.com/r/kB0rQ4/1