usage remove parse how android strip-tags

remove - Cómo pelar o escapar de las etiquetas html en Android



parsing html in java (7)

Alternativamente, puede usar Html.escapeHtml(String) si está apuntando a API 16 o superior.

Para la segmentación también debajo de API 16, puede utilizar la clase siguiente llamando a HtmlUtils.escapeHtml(String) que simplemente Html.escapeHtml(String) de la fuente de Html.escapeHtml(String) .

public class HtmlUtils { public static String escapeHtml(CharSequence text) { StringBuilder out = new StringBuilder(); withinStyle(out, text, 0, text.length()); return out.toString(); } private static void withinStyle(StringBuilder out, CharSequence text, int start, int end) { for (int i = start; i < end; i++) { char c = text.charAt(i); if (c == ''<'') { out.append("&lt;"); } else if (c == ''>'') { out.append("&gt;"); } else if (c == ''&'') { out.append("&amp;"); } else if (c >= 0xD800 && c <= 0xDFFF) { if (c < 0xDC00 && i + 1 < end) { char d = text.charAt(i + 1); if (d >= 0xDC00 && d <= 0xDFFF) { i++; int codepoint = 0x010000 | (int) c - 0xD800 << 10 | (int) d - 0xDC00; out.append("&#").append(codepoint).append(";"); } } } else if (c > 0x7E || c < '' '') { out.append("&#").append((int) c).append(";"); } else if (c == '' '') { while (i + 1 < end && text.charAt(i + 1) == '' '') { out.append("&nbsp;"); i++; } out.append('' ''); } else { out.append(c); } } } }

Estoy usando esta clase que funciona bien.

PHP tiene la función strip_tags que strip_tags etiquetas HTML y PHP de una cadena.

¿Android tiene una forma de escapar de html?


Esto es muy simple con jsoup

public static String html2text(String html) { return Jsoup.parse(html).text(); }


Esto es para una nueva alternativa de método (API 16+):

android.text.Html.escapeHtml(your_html).toString();


Html.fromHtml puede ser extremadamente lento para grandes cadenas html.

Así es cómo puedes hacerlo, de manera fácil y rápida con jsoup:

Agregue esta línea a su archivo gradle:

implementation ''org.jsoup:jsoup:1.11.3''

Compruebe cuál es la última versión de jsoup aquí: jsoup

Agregue esta línea a su código:

String text = Jsoup.parse(htmlStr).text();

Consulte este enlace aquí para aprender cómo preservar los saltos de línea:

¿Cómo puedo preservar los saltos de línea cuando uso jsoup para convertir html a texto sin formato?


Las soluciones en la respuesta vinculada por @sparkymat generalmente requieren ya sea regex, que es un enfoque propenso a errores, o la instalación de una biblioteca de terceros como jsoup o jericho . Una mejor solución en dispositivos Android es solo hacer uso de la función Html.fromHtml ():

public String stripHtml(String html) { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { return Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY); } else { return Html.fromHtml(html); } }

Esto usa el analizador Html incorporado de Android para construir una representación Spanned del html de entrada sin etiquetas html. El marcado "Span" se elimina convirtiendo la salida en una cadena.

Como se discutió here , el comportamiento Html.fromHtml ha cambiado desde Android N. Consulte la documentation para obtener más información.


Lo siento por la publicación tardía, pero creo que esto podría ayudar a otros,

Para eliminar simplemente las tiras html

Html.fromHtml(htmltext).toString()

De esta forma, la etiqueta html se reemplazará por una cadena, pero la cadena no se formateará correctamente. Por lo tanto, lo hice

Html.fromHtml(htmltext).toString().replaceAll("/n", "").trim()

De esta manera, primero reemplazo con nextline con espacio en blanco y elimino el espacio en blanco. Del mismo modo, puedes eliminar a los demás.


Spanned spanned; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { spanned = Html.fromHtml(textToShare, Html.FROM_HTML_MODE_LEGACY); } else { spanned = Html.fromHtml(textToShare); } tv.setText(spanned.toString());