Pregunta ¿Cómo elimino todas las etiquetas HTML de una cadena sin saber qué etiquetas hay en ella? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

¿Hay alguna manera fácil de eliminar todas las etiquetas HTML o CUALQUIER COSA relacionado de una cadena?

Por ejemplo:

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

Lo anterior realmente debería ser:

"Hulk Hogan's Celebrity Championship Wrestling [Proj # 206010] (Serie Reality)"


73
2017-08-09 19:12


origen


Respuestas:


Puedes usar una expresión regular simple como esta:

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

Tenga en cuenta que esta solución tiene su propio defecto. Ver Eliminar etiquetas HTML en String para más información (especialmente los comentarios de @mehaase)

Otra solución sería usar el Paquete HTML Agility.
Puede encontrar un ejemplo usando la biblioteca aquí: Paquete de agilidad de HTML: ¿elimina etiquetas indeseadas sin eliminar contenido?


155
2017-08-09 19:14



Puede analizar la cadena usando Paquete de agilidad Html y obtén el texto interno.

    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;

30
2017-08-09 19:21



Puedes usar el siguiente código en tu cadena y obtendrás la cadena completa sin la parte 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);

2
2017-08-09 20:50