Я хотел бы заменить все экземпляры подстроки в строке, но String.replaceAll()
принимает только шаблон. Строка, полученная мной из предыдущего совпадения. Можно ли добавить escape-последовательности в шаблон, который у меня есть, или есть версия replaceAll()
в другом классе, которая принимает буквальную строку вместо шаблона?
116
Ответы:
Просто используйте,
String.replace(CharSequence,CharSequence)
а неreplaceAll
.источник
System.out.println("hello world, hello life, hello you".replace("hello","hi"));
возвращается"hi world, hi life, hi you"
.Метод добавления побегов является
Pattern.quote()
.Но, как говорит Джон, вы можете просто использовать
replace()
. Несмотря на то, что он отличается отreplaceAll
названия, он заменяет все вхождения точно так жеreplaceAll()
.источник
Pattern.compile()
компилирует строку как регулярное выражение, то есть специальные символы будут иметь особое значение. Это полная противоположность томуPattern.quote()
, что делает, и то, о чем просил OP (quote()
говорит: «обрабатывать строку как литерал»). Может быть, вы могли бы подробнее рассказать о «нежелательных результатах», о которых вы говорите.Matcher.quoteReplacement("$aa +")
.Pattern.compile()
производит aPattern
, а не aString
, поэтому мне непонятно, как вы вообще его используетеreplaceAll
.