Me gustaría reemplazar todas las instancias de una subcadena en una cadena, pero String.replaceAll()
solo acepta un patrón. La cadena que tengo vino de un partido anterior. ¿Es posible agregar escapes al patrón que tengo o hay una versión de replaceAll()
en otra clase que acepta una cadena literal en lugar de un patrón?
115
Respuestas:
Solo use en
String.replace(CharSequence,CharSequence)
lugar dereplaceAll
.fuente
System.out.println("hello world, hello life, hello you".replace("hello","hi"));
devuelve"hi world, hi life, hi you"
.El método para agregar escapes es
Pattern.quote()
.Pero como dice Jon, puedes usar
replace()
. A pesar de que se desvía delreplaceAll
nombre, reemplaza todas las apariciones comoreplaceAll()
.fuente
Pattern.compile()
compila la cadena como una expresión regular, lo que significa que a los caracteres especiales se les dará un significado especial. Eso es todo lo contrario de lo quePattern.quote()
hace, y lo que pedía el OP (quote()
dice, "trata la cadena como un literal"). Quizás podría ampliar los "resultados indeseables" de los que está hablando.Matcher.quoteReplacement("$aa +")
.Pattern.compile()
produce unPattern
, no unString
, por lo que no me queda claro cómo lo estás usando enreplaceAll
.