Java String.replace() 或 StringBuilder.replace()
Java String.replace() or StringBuilder.replace()
在我使用 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 会有什么不同吗?
使用 StringBuilder
在这里不会产生有用的差异。
更好的改进是使用单个正则表达式:
someData = someData.replaceAll("(?s)<tag_(one|two|three|four|five)>.*?</tag_\1>", "");
此处,\1
与 (one|two|etc)
组中捕获的相同内容相匹配。
在我使用 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 会有什么不同吗?
使用 StringBuilder
在这里不会产生有用的差异。
更好的改进是使用单个正则表达式:
someData = someData.replaceAll("(?s)<tag_(one|two|three|four|five)>.*?</tag_\1>", "");
此处,\1
与 (one|two|etc)
组中捕获的相同内容相匹配。