方法一:indexOf(String s)

可以配合indexOf(String s)的使用,如果包含,返回的值是包含该子字符串在父类字符串中起始位置;如果不包含必定全部返回值为-1

public void test02() {String str1="张三";String str2="是一个张三大笨蛋";if(str2.indexOf(str1)!=-1) {System.out.println("存在包含关系");}else {System.out.println("不存在包含关系");}}

方法二:contains()

String类型有一个方法:contains(),该方法是判断字符串中是否有子字符串。如果有则返回true,如果没有则返回false。

package api.api;public class App1 {public static void main(String[] args) {String num = "WKCON190400111";if (num.contains("CON")) {System.out.println(1);} else {undefinedSystem.out.println(2);}}
}输出结果:
1

String.indexOf与String.contains效率测试

String.indexOf与String.contains都是判断字符串是否包含另一个字符串的方法。String.indexOf存在返回第一个字符索引位置,不存才返回-1;String.contains存在返回true,不存在返回false。

现在测试两个方法的效率,不区分大小写判断。一个字符串判断是否含有48个单词中的单词,执行一百万次。

结论 : String.indexOf 效率更高。 (或许我的测试方法有误,欢迎指正)

先上结果,如下

1000000*48 次 String.contains 耗时:4691 ms
1000000*48 次 String.indexOf  耗时:31 ms
^str1:全部存在(小写)-------------------------------------------------------------------1000000*48 次 String.contains 耗时:3735 ms
1000000*48 次 String.indexOf  耗时:17 ms
^str2:全部存在(大写)-------------------------------------------------------------------1000000*48 次 String.contains 耗时:37 ms
1000000*48 次 String.indexOf  耗时:14 ms
^str3:部分存在------------------------------------------------------------------------1000000*48 次 String.contains 耗时:17 ms
1000000*48 次 String.indexOf  耗时:14 ms
^str4:不存在(数字、字符、字母)----------------------------------------------------------1000000*48 次 String.contains 耗时:16 ms
1000000*48 次 String.indexOf  耗时:16 ms
^str5:不存在(字母)--------------------------------------------------------------------1000000*48 次 String.contains 耗时:17 ms
1000000*48 次 String.indexOf  耗时:14 ms
^str6:不存在(数字)--------------------------------------------------------------------1000000*48 次 String.contains 耗时:17 ms
1000000*48 次 String.indexOf  耗时:14 ms
^str7:不存在(字符)--------------------------------------------------------------------

测试代码如下

public class StringContainsOrIndexOfVelocity {private static final String base = "article.add,article.update,article.delete,article.view," +"category.add,category.update,category.delete,category.view," +"user.add,user.update,user.delete,user.view," +"role.add,role.update,role.delete,role.view," +"news.add,news.update,news.delete,news.view," +"category.add,category.update,category.delete,category.view," +"Threading.add,Threading.update,Threading.delete,Threading.view," +"System.add,System.update,System.delete,System.view," +"Generic.add,Generic.update,Generic.delete,Generic.view," +"Collections.add,Collections.update,Collections.delete,Collections.view," +"Tasks.add,Tasks.update,Tasks.delete,Tasks.view," +"CslApp.add,CslApp.update,CslApp.delete,CslApp.view";private static final String[] bases = base.toUpperCase().split(",");private static final String str1 = base;private static final String str2 = base.toUpperCase();private static final String str3 = "ns.add,Collections.update,Collections.delete,Collections.ving.add,Threading.update,Threading.delete,Threading.add,role.update,role.delete,role.vietions.1";private static final String str4 = "klsjflsjdfoadsfi;jadls;fjoashgewnaiefahefoia274923472395674358920374uy3fh2f92yfh02ydsuhawe9f''''''//>>>>><<<~~~~!!@#$%^&&hrhfa8fewy7rt23984g23fhaiouf";private static final String str5 = "skdhlskdjfasd;faioegneohfaeofjaoeihfjaopihfeoasmgvlandihfawieughfyoiebfinlkjdsfoiajheiohioejfaesafkhjasdhflakdjsfasdfaldfadfsdjflsfjaldfjlajdflajldjflkaf";private static final String str6 = "239875824368517230941327041230740471674083295738473297589327492347239567435892037409827304203406324672937027394623764170324671324891748192374937489273489";private static final String str7 = "`--==-`-=-=-`=-`=-`==-@#$%^&*((*&^%$#$#$@#@##!@#$$%&^*()()())>><:;'''''''//>>>>><<<~~~~!!@#$%^&&*@#$%^&*()#$%^&*(*&^%$#@#$%^&*(*&^%$#@!@#$%^&*(*&^%$#";public static void main(String[] args) {int count = 1000000;test(str1, count);System.out.println("^str1:全部存在(小写)-------------------------------------------------------------------");System.out.println();test(str2, count);System.out.println("^str2:全部存在(大写)-------------------------------------------------------------------");System.out.println();test(str3, count);System.out.println("^str3:部分存在------------------------------------------------------------------------");System.out.println();test(str4, count);System.out.println("^str4:不存在(数字、字符、字母)----------------------------------------------------------");System.out.println();test(str5, count);System.out.println("^str5:不存在(字母)--------------------------------------------------------------------");System.out.println();test(str6, count);System.out.println("^str6:不存在(数字)--------------------------------------------------------------------");System.out.println();test(str7, count);System.out.println("^str7:不存在(字符)--------------------------------------------------------------------");}private static void test(String str, int count) {str = str.toUpperCase();long t = System.currentTimeMillis();for (int i = 0; i < count; i++) {for (String s : bases) {if (str.contains(s)) {}}}long t2 = System.currentTimeMillis();System.out.println(count + "*" + bases.length + " 次 String.contains 耗时:" + (t2 - t) + " ms");for (int i = 0; i < count; i++) {for (String s : bases) {if (str.indexOf(s) != -1) {}}}long t3 = System.currentTimeMillis();System.out.println(count + "*" + bases.length + " 次 String.indexOf  耗时:" + (t3 - t2) + " ms");}}

List.contains和String.contains的区别

如果不把List里的元素遍历出来再用contains过滤关键字,直接用List.contains其效果其实是底层遍历List会用equals去匹配,效果是严格的判相等的方法。
而String.contains是用数组去截取每段内容轮流匹配,类似于模糊查询的效果。

Java 中判断一个字符串是否包含另外一个字符串的方法相关推荐

  1. Java中判断两个Date时间段是否有交集的方法

    场景 两个时间段,判断是否有交集. 思想是: 找到两个时间段开始时间的最大值和结束时间的最小值. 如果开始时间的最大值小于等于结束时间的最小值则说明这两个时间段有交集. 注: 博客: https:// ...

  2. java能否构成三角形_java中判断三个参数是否能构成三角形的方法

    java中判断三个参数是否能构成三角形的方法 发布时间:2020-06-25 14:02:58 来源:亿速云 阅读:171 作者:Leah 这篇文章将为大家详细讲解有关java中判断三个参数是否能构成 ...

  3. java字符串中包含_怎么判断一个字符串是否包含另一个字符串

    第一步骤:判断一个字符串是否包含另一个字符串. 1.思路整理 首先我们可以借助于java中String类提供的indexOf方法 2.代码如下 public class TestString { pu ...

  4. java检查两个字符串是否包含,java判断一个字符串是否包含另外一个字符串,java另外一个,要检查一个字符串是否包含...

    java判断一个字符串是否包含另外一个字符串,java另外一个,要检查一个字符串是否包含 要检查一个字符串是否包含另外一个字符串需要使用indexOf()方法,如果indexOf方法返回大于等于0的值 ...

  5. java中判断字符串实际长度(中文2个字符,英文1个字符)的方法,包含中英文符号

    java中判断字符串实际长度(中文2个字符,英文1个字符)的方法,包含中英文符号 介绍 数据库中很多字段都会限制长度,为了方便用户使用,在前端界面给出限制长度的提示,看网上很多写的获取字符串长度都没有 ...

  6. java中判断一个字符在字符串中出现的次数

    源代码: //java中判断一个字符出现的次数//在下面字符串中查找有几个啊public static void testFindChar(){String str = "啊!我爱你中国!啊 ...

  7. java中判断字符串是否为数字的方法 StringUtil包函数

    java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){   for (int i = 0; i &l ...

  8. python如何判断字符串是否包含某些汉字_Python如何判断一个字符串是否包含指定子字符串...

    Python如何判断一个字符串是否包含指定字符串?本篇文章就给大家介绍Python判断一个字符串是否包含指定子串的3种方法.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 程序员在字 ...

  9. C 判断一个字符串是否包含另一个字符串

    如何判断一个字符串是否包含另一个字符串? 思路:从一个字符串中提取出可能与另一个字符串相同的部分,再进行比较. 代码: #include <stdio.h> #include <st ...

最新文章

  1. VR不仅用于游戏!HTC Vive显示美国市长VR用于城市规划
  2. 关于 SAP Spartacus 服务器端渲染 SSR 无法使用窗口宽度以进行自适应设计的问题
  3. 【推荐实践】阿里文娱面向用户增长的信息流分发机制
  4. 实例分割和语义分割使用labelme制作的数据集如何转换为voc和coco格式的数据
  5. 59. DNS 服务器
  6. 离散数学蕴含式的问题
  7. 乌龟git解决冲突_关于git中自己的分支和主分支有冲突的解决方案(git和乌龟git)...
  8. linux查看u盘的分区格式化,linux U盘格式化ext3
  9. python对文件去重_python对文件夹内文件去重
  10. java spy_Java Spy-代码跟踪神器
  11. 尝试说透网关和路由器的异同
  12. [原创]windows server 2012 AD架构 试验 系列 – 17管理用户AD帐号
  13. /和./和../的区别
  14. python动画篮球大小_用Python把蔡徐坤打篮球视频转换成字符动画!
  15. 网格交易 python代码_网格交易原理和代码
  16. python冒号亮红无效语法_新的python无效语法*更新
  17. mysql Unknown error 1146
  18. gunicorn工作原理
  19. 服务器是嵌入式系统吗,常见的几种嵌入式web服务器
  20. Python数据结构与算法基础|第二期:代码实现——栈的顺序存储与链式存储

热门文章

  1. php数组验证用户名密码,求个php数组验证问题,在线等
  2. PHP array_merge()函数与示例
  3. scala python_Scala与Python | 哪种编程语言更好
  4. currency abap_Java Currency getDefaultFractionDigits()方法及示例
  5. ruby array_在Ruby中使用Array.pop和Array.shift方法从Array中删除元素
  6. mysql 模拟序列_【原创】MySQL 模拟PostgreSQL generate_series 表函数
  7. 内蒙古师范大学计算机科学技术学院,内蒙古师范大学计算机科学技术硕士生导师——李成城...
  8. python 三维图直方图_Python | 阶梯直方图
  9. Jsp中使用数据库连接池
  10. mysql5.6.35安装_mysql5.6.35 二进制快速安装