替换字符串中所有出现的子字符串-在Java中哪个效率更高?
我知道替换字符串中 所有 出现的子字符串的两种方法。
正则表达式的方式(假设“要替换的子字符串”不包括正则表达式的特殊字符):
String regex = "substring-to-be-replaced" + "+";Pattern scriptPattern = Pattern.compile(regex);
Matcher matcher = scriptPattern.matcher(originalstring);
newstring = matcher.replaceAll("replacement-substring");
String.replace()方式:
newstring = originalstring.replace("substring-to-be-replaced", "replacement-substring");
两者中哪一个效率更高(为什么)?
是否有比上述两种方法更有效的方法?
回答:
String.replace()
在下面使用正则表达式。
public String replace(CharSequence target, CharSequence replacement) { return Pattern.compile(target.toString(), Pattern.LITERAL)
.matcher(this ).replaceAll(
Matcher.quoteReplacement(replacement.toString()));
}
是否有比上述两种方法更有效的方法?
假设您在一个由数组支持的实现上进行操作,而不是在不可变的String类上进行操作(因为每次调用string.replace
都会创建一个
字符串)。例如,参见StringBuilder.replace()。
编译正则表达式会产生 开销,这在观察Pattern源代码时很明显。幸运的是,Apache提供了一种替代方法StringUtils.replace()
,根据源代码(第3372行),该方法非常有效。
以上是 替换字符串中所有出现的子字符串-在Java中哪个效率更高? 的全部内容, 来源链接: utcz.com/qa/397834.html