Eu gostaria de substituir todas as instâncias de uma substring em uma string, mas String.replaceAll()
só aceita um padrão. A string que recebi de uma partida anterior. É possível adicionar escapes ao padrão que tenho ou existe uma versão replaceAll()
em outra classe que aceita uma string literal em vez de um padrão?
115
Respostas:
Basta usar em
String.replace(CharSequence,CharSequence)
vez dereplaceAll
.fonte
System.out.println("hello world, hello life, hello you".replace("hello","hi"));
retorna"hi world, hi life, hi you"
.O método para adicionar escapes é
Pattern.quote()
.Mas, como diz Jon, você pode simplesmente usar
replace()
. Apesar de divergir doreplaceAll
nome, ele substitui todas as ocorrências exatamente comoreplaceAll()
.fonte
Pattern.compile()
compila a string como uma expressão regular, o que significa que os caracteres especiais terão um significado especial. Isso é o completo oposto do quePattern.quote()
faz e do que o OP estava pedindo (quote()
diz "trate a string como um literal"). Talvez você possa expandir os "resultados indesejáveis" de que está falando.Matcher.quoteReplacement("$aa +")
.Pattern.compile()
produz umPattern
, não umString
, então não está claro para mim como você o está usando emreplaceAll
.