Java String.replace()或StringBuilder.replace()

时间:2017-12-22 10:32:40

标签: java string performance stringbuilder

在我使用5-10替换的场景中,有必要使用stringbuilder。

String someData = "......";
someData = someData.replaceAll("(?s)<tag_one>.*?</tag_one>", "");
someData = someData.replaceAll("(?s)<tag_two>.*?</tag_two>", "");
someData = someData.replaceAll("(?s)<tag_three>.*?</tag_three>", "");
someData = someData.replaceAll("(?s)<tag_four>.*?</tag_four>", "");
someData = someData.replaceAll("(?s)<tag_five>.*?</tag_five>", "");
someData = someData.replaceAll("<tag_five/>", "");
someData = someData.replaceAll("\\s+", "");

如果我在这里使用stringBuilder,它会有所作为。

1 个答案:

答案 0 :(得分:8)

使用StringBuilder不会在这里产生有用的差异。

更好的改进是使用单个正则表达式:

someData = someData.replaceAll("(?s)<tag_(one|two|three|four|five)>.*?</tag_\\1>", "");

此处,\\1(one|two|etc)群组中捕获的内容相同。