Tengo que escribir algún tipo de analizador sintáctico que obtenga un String y reemplace ciertos conjuntos de caracteres con otros. El código se ve así:La manera más rápida de realizar muchas cadenas reemplazar en Java
noHTMLString = noHTMLString.replaceAll("</p>", "\n");
noHTMLString = noHTMLString.replaceAll("<br/>", "\n\n");
noHTMLString = noHTMLString.replaceAll("<br />", "\n\n");
//here goes A LOT of lines like these ones
La función es muy larga y realiza una gran cantidad de cadenas reemplaza. El problema aquí es que lleva mucho tiempo porque el método se llama muchas veces, lo que ralentiza el rendimiento de la aplicación.
He leído algunos hilos aquí sobre el uso de StringBuilder como alternativa pero le falta el método ReplaceAll y como se señaló aquí Does string.replaceAll() performance suffer from string immutability? el método replaceAll en clase String trabaja con
Perfil de Compatibilidad & Matcher y Matcher.replaceAll() usa un StringBuilder para almacenar el valor eventualmente devuelto , así que no sé si al cambiar a StringBuilder realmente se reducirá el tiempo para realizar las sustituciones.
¿Conoces una manera rápida de hacer mucho reemplazo de cadenas de forma rápida? ¿Tienes algún consejo para este problema?
Gracias.
EDIT: Tengo que crear un informe que tiene algunos campos con texto html. Para cada fila estoy llamando al método que reemplaza todas las etiquetas html y caracteres especiales dentro de estas cadenas. Con un informe completo, toma más de 3 minutos analizar todo el texto. El problema es que tengo que invocar el método muy a menudo
¿Qué es lo que más te relaja? - La longitud de su texto noHTMLString, o invocar estas tres declaraciones muy a menudo? – Ralph
Tengo que crear un informe que tenga algunos campos con texto html. Para cada fila estoy llamando al método que reemplaza todas las etiquetas html y caracteres especiales dentro de estas cadenas. Con un informe completo, toma más de 3 minutos analizar todo el texto. Entonces, el problema es que tengo que invocar el método muy a menudo. – Averroes
Vea también: http://stackoverflow.com/a/1765616/59087 –