我正在做一些文本预处理,我至少使用了 10 次 replaceAll() 方法。恐怕这开始变得低效了。
我的代码是这样的:
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"));
有什么想法可以让这段代码更高效吗?
最佳答案
根据您的模式,您可以通过预编译它们获得不错的改进。 replaceAll
必须执行类似于 Pattern.compile(patternStr).matcher(this).replaceAll(replacement)
的操作。它不会缓存 Pattern
,因此如果您只编译一次,您将看到改进,前提是代码被调用不止一次。
如果可以,请使用 String.replace()
而不是 String.replaceAll()
,但这听起来有点像您需要模式。
关于java - 多次使用 replaceAll() String 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24042516/