如何一次替换字符串的多个子字符串?

我希望在String中替换两个子字符串,所以我编写以下代码。 当S是一个巨大的字符串时,我认为我的代码效率太低了。

我可以一次替换字符串的多个子字符串吗? 还是有更好的方法来替换字符串?

添加:

我希望找到一种可以快速替换子串的方法!

String s="This %ToolBar% is a %Content%"; s=s.replace("%ToolBar%","Edit ToolBar"); s=s.replace("%Content%","made by Paul"); 

如果您只想执行一次s搜索,您可以执行自己的indexOf()循环,也可以使用正则表达式替换循环。

下面是使用正则表达式替换循环的示例,它使用appendReplacement()appendTail()方法来构建结果。

为了消除进行字符串比较以找出找到哪个关键字的需要,每个关键字都成为一个捕获组,因此可以使用start(int group)快速检查关键字的存在。

 String s = "This %ToolBar% is a %Content%"; StringBuffer buf = new StringBuffer(); Matcher m = Pattern.compile("%(?:(ToolBar)|(Content))%").matcher(s); while (m.find()) { if (m.start(1) != -1) m.appendReplacement(buf, "Edit ToolBar"); else if (m.start(2) != -1) m.appendReplacement(buf, "made by Paul"); } m.appendTail(buf); System.out.println(buf.toString()); // prints: This Edit ToolBar is a made by Paul 

在另一个答案中可以看到更动态的版本。