1 简介
判断一个字符串是否包含某个特定子串是常见的场景,比如判断一篇文章是否包含敏感词汇、判断日志是否有信息等。本文将介绍四种方法并进行性能测试。
2 四种方法
2.1 JDK原生方法String.indexOf
在的函数中,提供了方法,返回子串第一次出现的位置,如果不存在则返回-1。例子如下:
2.2 JDK原生方法String.contains
最直观判断的方法是,返回类型为,如果包含返回,不包含则返回。例子如下:
实际上,的方法是通过调用方法来判断的,源码如下:
2.3 JDK原生正则匹配Pattern
通过强大的正则匹配来判断,虽然有点杀鸡用牛刀的感觉,但也不是不能用,例子如下:
2.4 Apache库StringUtils.contains
Apache的提供许多开箱即用的功能,就提供了许多与字符串相关的功能,例子如下:
3 性能对比
我们使用工具来对四种方法进行性能测试,引入代码如下:
测试代码如下:
测试结果如下:
最快的就是方法,其次是方法,二者应该没有实际区别,是调用来实现的。Apache的为第三方库,相对慢一些。最慢的是使用了正则的的方法,这不难理解,正则引擎的匹配是比较耗性能的。
4 总结
本文介绍了判断一个字符串是否包含某个特定子串的四种方法,并通过性能测试进行了对比。其中性能最好的是String的方法和方法,建议使用方法,性能好,跟相比,更直观,更不容易犯错。毕竟让每个人时刻记住返回代表不存在也不是一件容易的事。
但是,使用和方法都需要注意做判空处理,这时的优势就体现出来了。
欢迎关注公众号,将持续为你更新...
多读书,多分享;多写作,多整理。
领取专属 10元无门槛券
私享最新 技术干货