2012-04-29 20 views
7

Estoy analizando un feed rss mal estructurado, y algunos de los datos que se devuelven tienen <p>at en él. ¿Cómo puedo reemplazar todas las instancias de <p>at con un espacio vacío, usando java?Reemplazar secuencia de caracteres en java

Estoy familiarizado con el método .replace para la clase String, pero no estoy seguro de cómo se vería la expresión regular. Intenté inputString.replace("<p>at", "") pero eso no funcionó.

+1

favor mostrar un SSCCE. El 'replace()' no usa expresiones regulares (y por lo tanto debería funcionar). 'replaceAll()' es el que usa expresiones regulares (que por lo tanto no debería usar). – BalusC

+0

Quise decir replaceAll(). replace() no funcionará porque se necesita un solo carácter para reemplazar. – user1154644

+0

Guau, ¿todavía estás * en Java 1.4 o más? Desde Java 1.5 (lanzado a fines de 2004), hay dos métodos 'replace()', uno que toma 'char' y otro que toma' CharSequence' (y por lo tanto también 'String'). En cualquier caso, este "error tipográfico" es precisamente una de las razones por las que debe mostrar un SSCCE. Para que podamos, en esencia, copiar y pegar sin cambios para ver su problema nosotros mismos. – BalusC

Respuesta

11

Prueba esto:

inputString = inputString.replace("<p>at", ""); 

Tenga en cuenta que el método replace() hace no modificar el String in situ (como es el caso de todos métodos de la clase String, porque es inmutable), en su lugar, devuelve un nuevo String con las modificaciones, y debe guardar la cadena devuelta en algún lugar.

Además, la versión anterior de replace() no recibe una expresión regular como argumento, solo la cadena que se va a reemplazar y su reemplazo.

+0

+1 El punto crucial aquí es que las cadenas son *** inmutables ***. Es imposible (bueno, a menos que haga todo lo posible para engañar al compilador) cambiar el valor de una cadena. Todos los métodos que "cambien" una cadena devolverán una nueva cadena que contiene el valor modificado. –

+0

ese era el problema, gracias. – user1154644

+0

@JimGarrison spot-on !. Agregué esa información en mi respuesta –

1
inputString.replace("<p>at", "") // this will replace all match's with second parameter charsequence 
inputString.replaceAll("<p>at", "") // Replaces each substring of this string that matches the given regular expression with the given replacement. 

puede usar cualquiera.

gracias

+0

Estás equivocado. Lee el javadoc: http://docs.oracle.com/javase/6/docs/api/java/lang/String.html – BalusC

+0

OOPS ... gracias por corregirme. @BalusC –

Cuestiones relacionadas