栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么Java中大多数字符串操作都基于regexp?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么Java中大多数字符串操作都基于regexp?

请注意,无需每次都重新编译正则表达式。从Javadoc:

这种形式的方法的调用

str.split(regex, n)
产生与表达式相同的结果

Pattern.compile(regex).split(str, n)

也就是说,如果您担心性能,则可以预编译模式,然后重用它:

Pattern p = Pattern.compile(regex);...String[] tokens1 = p.split(str1); String[] tokens2 = p.split(str2); ...

代替

String[] tokens1 = str1.split(regex);String[] tokens2 = str2.split(regex);...

我相信进行此API设计的主要原因是方便。由于正则表达式也包括所有“固定”字符串/字符,因此它简化了API使用一种方法而不是几种方法的方法。而且,如果有人担心性能,则仍可以如上所述对正则表达式进行预编译。

我的感觉(我无法获得任何统计证据支持)是,大多数情况

String.split()
是在性能不成问题的情况下使用的。例如,这是一次性的操作,或者与其他因素相比,性能差异可以忽略不计。在紧密循环中使用同一个正则表达式数千次拆分字符串的情况下,IMO很少出现,性能优化确实有意义。

有趣的是,将具有固定字符串/字符的正则表达式匹配器实现的性能与专用于它们的匹配器的性能进行比较。差异可能不足以证明单独的实现是正确的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/440908.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号