gpt4 book ai didi

java - String replaceAll() 与 Matcher replaceAll()(性能差异)

转载 作者:IT老高 更新时间:2023-10-28 20:39:18 30 4
gpt4 key购买 nike

String.replaceAll() 和 Matcher.replaceAll()(在从 Regex.Pattern 创建的 Matcher 对象上)在性能方面是否存在已知差异?

另外,两者在高级 API 上的区别是什么? (不变性、处理 NULL、处理空字符串等)

最佳答案

根据 String.replaceAll 的文档,关于调用方法有如下说法:

An invocation of this method of the form str.replaceAll(regex, repl) yields exactly the same result as the expression

Pattern.compile(regex).matcher(str).replaceAll(repl)

因此,可以预期调用 String.replaceAll 和显式创建 Matcher 之间的性能。和 Pattern应该是一样的。

编辑

正如评论中所指出的,对于从 StringMatcher< 对 replaceAll 的单个调用,性能差异不存在,然而,如果需要对 replaceAll 执行多次调用,人们会期望保留已编译的 Pattern 是有益的,因此相对昂贵的正则表达式模式编译不必每次都执行。

关于java - String replaceAll() 与 Matcher replaceAll()(性能差异),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1466959/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com