¿Existe alguna forma sencilla de eliminar todas las etiquetas HTML o CUALQUIER COSA relacionada con HTML de una cadena?
Por ejemplo:
string title = "<b> Hulk Hogan's Celebrity Championship Wrestling <font color=\"#228b22\">[Proj # 206010]</font></b> (Reality Series, )"
Lo anterior realmente debería ser:
"Lucha por el campeonato de celebridades de Hulk Hogan [Proj # 206010] (Reality Series)"
xidel -s input -e '/'
.Respuestas:
Puede usar una expresión regular simple como esta:
Tenga en cuenta que esta solución tiene sus propios defectos. Consulte Eliminar etiquetas HTML en String para obtener más información (especialmente los comentarios de @mehaase)
Otra solución sería utilizar HTML Agility Pack .
Puede encontrar un ejemplo usando la biblioteca aquí: Paquete de agilidad HTML : ¿eliminar etiquetas no deseadas sin eliminar contenido?
fuente
< 10 <b>
y</b>
ambos se eliminan.Puede analizar la cadena utilizando el paquete Html Agility y obtener el InnerText.
fuente
InnerText
solución ya que elimina todas las etiquetas. Pero ... deja atrás
y también comentarios etiquetas<!-- xxx -->
como las que rodeanv:shapetype
,v:shape
ov:imagedata
con[if gte vml 1]
o[if !vml]
es una entidad html, no una etiqueta, por lo que una solución para eliminar eso podría serresult = WebUtility.HtmlDecode(result);
y eliminar los nodos de comentarios, usando Html Agility Pack:htmlDoc.DocumentNode.SelectNodes("//comment()")?.ForEach(c=> c.Remove());
justo antes de hacerloresult = htmlDoc.DocumentNode.InnerText;
Puede usar el siguiente código en su cadena y obtendrá la cadena completa sin la parte html.
fuente