Replace all occurrences of substring in a string - which is more efficient in Java?

前端 未结 5 557
轮回少年
轮回少年 2020-12-15 09:53

I know of two ways of replacing all occurrences of substring in a string.

The regex way (assuming \"substring-to-be-replaced\" doesn\'t include regex specia

5条回答
  •  醉梦人生
    2020-12-15 10:40

    String.replace() uses regex underneath.

    public String replace(CharSequence target, CharSequence replacement) {
          return Pattern.compile(target.toString(), Pattern.LITERAL)
                 .matcher(this ).replaceAll(
                   Matcher.quoteReplacement(replacement.toString()));
      }
    

    Are there more efficient ways than the above described two?

    There are given that you operate on an implementation backed e.g., by an array, rather than the immutable String class (since string.replace creates a new string on each invocation). See for instance StringBuilder.replace().

    Compiling a regex incurs quite alot of overhead which is clear when observing the Pattern source code. Luckily, Apache offers an alternative approach in StringUtils.replace() which according to the source code (line #3732) is quite efficient.

提交回复
热议问题