Java中提供了多种方法来判断一个字符串是否包含另一个字符串,可以根据场景的不同选择不同的方法。本文将介绍Java中常见的几种方法,以及它们的优缺点、应用场景。
一、String.contains()
String类中自带了一个contains()方法,用于判断该字符串是否包含指定的字符序列:
String str1 = "Hello World"; System.out.println(str1.contains("He")); //true System.out.println(str1.contains("Wo")); //true System.out.println(str1.contains("wor")); //false
该方法返回一个boolean值表示是否包含指定的字符序列。注意,contains()方法是区分大小写的。
二、String.indexOf()
String类中的indexOf()方法也可以判断字符串是否包含指定的字符序列,该方法会返回指定字符或字符串在原字符串中首次出现的位置,如果没有找到则返回-1:
String str2 = "Hello World"; System.out.println(str2.indexOf("He")); //0 System.out.println(str2.indexOf("Wo")); //6 System.out.println(str2.indexOf("wor")); //-1
可以根据返回值是否等于-1来判断该字符串是否包含指定的字符序列。同样需要注意的事项是,indexOf()方法也是区分大小写的。
三、String.matches()
String类中的matches()方法可以使用正则表达式来判断该字符串是否包含指定的字符序列,返回一个boolean值表示是否匹配成功:
String str3 = "Hello World"; System.out.println(str3.matches(".*He.*")); //true System.out.println(str3.matches(".*Wo.*")); //true System.out.println(str3.matches(".*wor.*")); //false
这里使用了".*"来表示任意字符,matches()方法返回true表示该字符串中存在匹配正则表达式的字符序列。
四、Pattern.compile()
Pattern类和Matcher类可以组合起来实现更复杂的字符串匹配操作。Pattern.compile()可以将正则表达式编译成Pattern对象,再利用Matcher来搜索字符串:
String str4 = "Hello World"; Pattern p = Pattern.compile("He"); Matcher m = p.matcher(str4); System.out.println(m.find()); //true System.out.println(m.start()); //0
这段代码的结果和String.indexOf()方法类似,但是使用Pattern和Matcher可以获得更强的灵活性,可以对正则表达式进行更多的操作。
五、StringUtils.containsIgnoreCase()
StringUtils类是Apache Commons Lang库中提供的一个工具类,其中包含了许多常见字符串操作的工具方法,其中包括一个containsIgnoreCase()方法,用于按照不区分大小写的方式判断字符串是否包含指定的字符序列:
String str5 = "Hello World"; System.out.println(StringUtils.containsIgnoreCase(str5, "he")); //true System.out.println(StringUtils.containsIgnoreCase(str5, "wo")); //true System.out.println(StringUtils.containsIgnoreCase(str5, "wor")); //false
该方法返回一个boolean值,表示不区分大小写的方式下是否包含指定字符序列。
结论:
以上介绍了Java中常用的几种判断字符串是否包含指定字符序列的方法,它们各有优缺点,可以根据具体的应用场景来选择使用。String.contains()和String.indexOf()方法简单易用,但无法使用正则表达式,适用于简单的字符串匹配操作;String.matches()方法可以使用正则表达式,但需要更复杂的语法来进行匹配;而Pattern类和Matcher类可以组合出更灵活的匹配方案,但需要更多的代码来实现。
在实际应用中,可以根据实际需要来选择使用哪种方式,也可以将它们组合使用,实现更强大的字符串匹配功能。