假设我在一个替换1,000个匹配实例的大字符串上调用了replaceAll()。这是否意味着由于字符串不变性而创建并重新分配了1,000个字符串?还有更快的替代方案吗?
答案 0 :(得分:13)
如果你深入研究String,你会发现它将replaceAll()委托给Pattern& Matcher 和 Matcher.replaceAll()使用StringBuilder存储最终返回的值。
所以不,String.replaceAll()不会创建多个对象。
答案 1 :(得分:-1)
您可以尝试使用StringBuffer / StringBuilder,因为它们可变 CharSequence s:
CharSequence veryBigString = new StringBuilder();
Pattern.compile(regex).matcher(veryBigString).replaceAll(replacement);