2010-12-13 27 views
9

Estoy escribiendo un programa que lee y separa los correos electrónicos no deseados y no deseados. Ahora lo estoy leyendo usando una clase de java bufferreayer. Soy capaz de eliminar todos los caracteres deseados como '(' o '', etc, utilizando el método replaceAll(). Quiero quitar las etiquetas HTML también, incluyendo & amplificador. ¿Cómo lograr esto !?eliminar las etiquetas html de la cadena usando Java

gracias

EDIT: Gracias por la respuesta, pero yo ya estoy teniendo una expresión regular, cómo combinar ambas mis necesidades y se pone en una Heres la expresión regular que estoy utilizando ahora

lines.replaceAll("[^a-zA-Z]", " ") 

Nota:.. que estoy recibiendo líneas de un archivo de texto. Cualquier otra sugerencia por favor ?!

+0

me trataron Jsoup..but no es working..no error complile, sus simplemente no funcionan .. – Maverick

+1

Temas similares http://stackoverflow.com/questions/1699313/how-to-remove-html -tag-in-java http://stackoverflow.com/questions/240546/removing-html-from-a-java-string –

Respuesta

35

Tal vez esto funcionará:

String noHTMLString = htmlString.replaceAll("\\<.*?>",""); 

Se utiliza regular expressions para eliminar todas las etiquetas HTML de una cadena.

Más específicamente, elimina todas las etiquetas similares a XML de una cadena. Por lo tanto, < 1234> se eliminarán aunque no sea una etiqueta HTML válida. Pero es bueno para la mayoría de los intentos y propósitos.

Espero que esto ayude.

+0

Una segunda llamada, como 'replaceAll (" &.*?; "," ")' eliminaría entidad referencias. Aunque me parece extraño que uno simplemente quiera eliminar estos, en lugar de traducirlos de nuevo a los personajes que representan. –

+0

Solución muy útil y potente. –

+4

Tenga cuidado con regex, esta no es una solución completa. Reemplaza también los caracteres no deseados -> usando esta expresión para una cadena como "a d" da como resultado "a d". –

3

Usted tendrá que hacer un poco de análisis de peso ligero para despojar el código HTML:

String extractText(String html) throws IOException { 
    final ArrayList<String> list = new ArrayList<String>(); 

    ParserDelegator parserDelegator = new ParserDelegator(); 
    ParserCallback parserCallback = new ParserCallback() { 
     public void handleText(final char[] data, final int pos) { 
      list.add(new String(data)); 
     } 
     public void handleStartTag(Tag tag, MutableAttributeSet attribute, int pos) { } 
     public void handleEndTag(Tag t, final int pos) { } 
     public void handleSimpleTag(Tag t, MutableAttributeSet a, final int pos) { } 
     public void handleComment(final char[] data, final int pos) { } 
     public void handleError(final java.lang.String errMsg, final int pos) { } 
    }; 
    parserDelegator.parse(new StringReader(html), parserCallback, true); 

    String text = ""; 

    for(String s : list) { 
     text += " " + s; 
    } 

    return text; 
} 
8

JSOUP

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

Para los usuarios de maven, el enlace a repos de maven para la última versión: https://mvnrepository.com/artifact/org.jsoup/jsoup – Ben

-1

importación java.io. *;

public class Html2TextWithRegExp { 


public static void main (String[] args) throws Exception{ 
StringBuilder sb = new StringBuilder(); 
BufferedReader br = new BufferedReader(new FileReader("java-new.html")); 
String line; 
while ((line=br.readLine()) != null) { 
    sb.append(line); 
    // or 
    // sb.append(line).append(System.getProperty("line.separator")); 
} 
String nohtml = sb.toString().replaceAll("\\<.*?>",""); 
System.out.println(nohtml); 
} 
} 
+0

¿Por qué creaste un constructor vacío? –

Cuestiones relacionadas