2009-08-09 89 views

回答

13

如果你深入研究String,你会看到,它代表的replaceAll()来Pattern & Matcher Matcher.replaceAll()使用一个StringBuilder存储最终返回值。

所以,不,String.replaceAll()不会产生比小数量的对象多。

+0

请记住,创建一个新的模式可能是昂贵的。根据被调用的频率,创建一次Pattern并从中创建Matcher可能更有效。与往常一样,分析您的应用程序会告诉您这是必要的还是过早的优化。 – AngerClown 2009-08-10 13:48:02

-1

你可以用一个StringBuffer/StringBuilder尝试,因为它们是可变CharSequence S:

CharSequence veryBigString = new StringBuilder(); 
Pattern.compile(regex).matcher(veryBigString).replaceAll(replacement); 
+1

如果'veryBigString'是可变的,那并不重要; 'replaceAll()'仍然会创建一个新的StringBuffer来完成这项工作,并将结果作为一个新的String返回。那是你的观点吗? – 2009-08-09 07:10:09