String.replaceAll没有RegEx

dro*_*del 105 java

我想替换字符串中的子字符串的所有实例,但String.replaceAll()只接受一个模式.我来自前一场比赛的字符串.是否有可能将转义添加到我拥有的模式中,或者是否有replaceAll()另一个类的版本接受文字字符串而不是模式?

Jon*_*eet 175

只是使用String.replace(CharSequence,CharSequence)而不是replaceAll.

  • 这不仅仅取代了第一个吗?很奇怪他们称之为"replaceAll"而不是"replaceRegex". (8认同)
  • @MagicOctopusUrn:是的,我同意它命名很差 - 随着时间的推移它引起了很多混乱. (8认同)
  • ```System.out.println("hello world,hello life,hello you".replace("hello","hi"));```返回```"hi world,hi life,hi you" ``. (3认同)
  • 我认为“replaceAll”(正则表达式方法)的命名是为了与“replaceFirst”(正则表达式方法)区分开来,而不是与“replace”(非正则表达式方法)区分开来。 (3认同)

Mar*_*ers 89

添加转义的方法是Pattern.quote().

String replaced = myString.replaceAll(Pattern.quote(matchingStr), replacementStr)
Run Code Online (Sandbox Code Playgroud)

但正如乔恩所说,你可以使用replace().尽管它偏离了replaceAll名称,但它确实取代了所有出现的情况replaceAll().