Comment utiliser une expression régulière C# pour remplacer/supprimer toutes les balises HTML, y compris les crochets d'angle ? Quelqu'un peut-il m'aider avec le code ?
Réponses
Trop de publicités?J'aimerais me faire l'écho de la réponse de Jason, mais il faut parfois analyser naïvement du Html et en extraire le contenu textuel.
J'avais besoin de faire cela avec du Html qui avait été créé par un éditeur de texte riche, toujours du plaisir et des jeux.
Dans ce cas, vous devrez peut-être supprimer le contenu de certaines balises, ainsi que les balises elles-mêmes.
Dans mon cas, des étiquettes ont été ajoutées à ce mélange. Certains trouveront peut-être que ma mise en œuvre (très légèrement) moins naïve constitue un point de départ utile.
/// <summary>
/// Removes all html tags from string and leaves only plain text
/// Removes content of <xml></xml> and <style></style> tags as aim to get text content not markup /meta data.
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static string HtmlStrip(this string input)
{
input = Regex.Replace(input, "<style>(.|\n)*?</style>",string.Empty);
input = Regex.Replace(input, @"<xml>(.|\n)*?</xml>", string.Empty); // remove all <xml></xml> tags and anything inbetween.
return Regex.Replace(input, @"<(.|\n)*?>", string.Empty); // remove any tags but not there content "<p>bob<span> johnson</span></p>" becomes "bob johnson"
}
Essayez la méthode des expressions régulières à cette URL : http://www.dotnetperls.com/remove-html-tags
/// <summary>
/// Remove HTML from string with Regex.
/// </summary>
public static string StripTagsRegex(string source)
{
return Regex.Replace(source, "<.*?>", string.Empty);
}
/// <summary>
/// Compiled regular expression for performance.
/// </summary>
static Regex _htmlRegex = new Regex("<.*?>", RegexOptions.Compiled);
/// <summary>
/// Remove HTML from string with compiled Regex.
/// </summary>
public static string StripTagsRegexCompiled(string source)
{
return _htmlRegex.Replace(source, string.Empty);
}
- Réponses précédentes
- Plus de réponses