首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

判断String是否包含子串的四种方法及性能对比

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的方法和方法,建议使用方法,性能好,跟相比,更直观,更不容易犯错。毕竟让每个人时刻记住返回代表不存在也不是一件容易的事。

但是,使用和方法都需要注意做判空处理,这时的优势就体现出来了。

欢迎关注公众号,将持续为你更新...

多读书,多分享;多写作,多整理。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200310A0UW6Z00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券