replaceAll()String方法的多种用法

时间:2014-06-04 16:14:03

标签: java regex string replaceall

我正在进行一些文本预处理,并且我使用replaceAll()方法至少10次。我担心这会开始变得低效。

我的代码就像:

text = text.replaceAll(regex1, "rStr");
text = text.replaceAll(regex2, "rStr2");
.
.
.
text = text.replaceAll(regexn, "rStrn");

我以为我会使用StringBuilder以避免一直使用新字符串,但我没有注意到太多差异。

StringBuilder sb = new StringBuilder();
sb.append(text.replaceAll(regex1, "rStr"));
sb.replace(0, sb.length(), sb.toString().replaceAll(regex2, "rStr2"));
.
.
.
sb.replace(0, sb.length(), sb.toString().replaceAll(regexn, "rStrn"));

有关如何提高此代码效率的任何想法吗?

2 个答案:

答案 0 :(得分:1)

根据您的模式,您可以通过预编译获得不错的改进。 replaceAll必须执行Pattern.compile(patternStr).matcher(this).replaceAll(replacement)之类的操作。它不会缓存Pattern,因此如果只编译一次,只要代码被多次调用,您就会看到改进。

如果可以,请使用String.replace()而不是String.replaceAll(),但听起来有点像你需要这种模式。

答案 1 :(得分:-2)

尽量不要使用正则表达式。在java中,主要是:

  • 的replaceAll
  • 分割
  • 模式和匹配器类

如果你可以使用substring方法或indexOf方法,那就去做吧!