Java代码如何判断String是否包含子串呢?
下文笔者将讲述四种检测一个String是否包含子串的方法分享,如下所示
检测一个字符串是否包含子串的方法分享
Pattern pattern = Pattern.compile("Java");
//包含Java
Matcher matcher1 = pattern.matcher("Python, Java, Go, C++");
assertTrue(matcher1.find());
//不包含Java
Matcher matcher2 = pattern.matcher("Python, C, Go, Matlab");
assertFalse(matcher2.find());
检测一个字符串是否包含子串的方法分享
JDK原生方法String.indexOf
在String对象的函数中 提供indexOf(subStr)方法 返回子串subStr第一次出现的位置 如果不存在则返回-1例
//包含Java assertEquals(7, "Java265.com Java".indexOf("Java")); //如果包含多个,返回第一次出现位置 assertEquals(0, "Java Java".indexOf("Java")); //大小写敏感 assertEquals(-1, "Google Guava".indexOf("guava"));
JDK原生方法String.contains
contains(subStr) 返回类型为boolean 如果包含则返回true 不包含则返回false例
//包含Java assertTrue("我爱 Java".contains("Java")); //大小写敏感,不包含GO assertFalse("世界上最好的语言Java".contains("语言")); //转为大写后包含 assertTrue("Java265".toUpperCase().contains("JAVA"));
注意事项: 实际上contains方法的底层是采用indexOf进行判断 public boolean contains(CharSequence s) { return indexOf(s.toString()) > -1; }
JDK原生中使用正则匹配Pattern
借助Apache库中StringUtils.contains方法
Apache中commons-lang3 提供许多开箱即用的功能 StringUtils提供许多与字符串相关的功能例
//包含sub assertTrue(StringUtils.contains("String subString", "sub")); //大小写敏感 assertFalse(StringUtils.contains("This is Java", "java")); //忽略大小写 assertTrue(StringUtils.containsIgnoreCase("This is Java", "java"));
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。