Java 判断字符串包含某个字符串的方法
在 Java 中,有多种方法可以判断一个字符串是否包含另一个字符串,以下是常用的几种方法:

使用 String.contains() 方法
这是最直接的方法,用于检查字符串是否包含指定的字符序列。
String str = "Hello, World!";
boolean contains = str.contains("World"); // 返回 true
boolean notContains = str.contains("Java"); // 返回 false
使用 String.indexOf() 方法
indexOf() 方法返回指定子字符串在字符串中第一次出现的位置,如果未找到则返回 -1。
String str = "Hello, World!";
boolean contains = str.indexOf("World") != -1; // 返回 true
boolean notContains = str.indexOf("Java") != -1; // 返回 false
使用 String.matches() 方法(正则表达式)
如果需要更复杂的匹配规则,可以使用正则表达式。
String str = "Hello, World!";
boolean contains = str.matches(".*World.*"); // 返回 true
boolean notContains = str.matches(".*Java.*"); // 返回 false
使用 String.contains() 并忽略大小写
如果需要忽略大小写进行匹配,可以先将字符串转换为统一大小写:

String str = "Hello, World!";
boolean containsIgnoreCase = str.toLowerCase().contains("world"); // 返回 true
使用 Apache Commons Lang 库
如果项目中使用了 Apache Commons Lang 库,可以使用 StringUtils.contains() 方法:
import org.apache.commons.lang3.StringUtils; String str = "Hello, World!"; boolean contains = StringUtils.contains(str, "World"); // 返回 true boolean notContains = StringUtils.contains(str, "Java"); // 返回 false
使用 Java 8 的 String.contains() 与 Predicate
结合 Java 8 的 Stream API 和 Predicate:
import java.util.function.Predicate;
String str = "Hello, World!";
Predicate<String> contains = s -> s.contains("World");
boolean result = contains.test(str); // 返回 true
性能比较
contains()方法通常是最快的,因为它专门为这个目的设计indexOf()方法也很高效,但需要额外的比较操作- 正则表达式方法最灵活但性能最差
注意事项
- 所有这些方法都是区分大小写的
- 如果需要不区分大小写的匹配,建议先将字符串转换为统一大小写
- 对于空字符串检查,
contains()方法会正确处理,不会抛出异常
选择哪种方法取决于你的具体需求和代码的可读性要求,对于简单的包含检查,String.contains() 通常是最佳选择。

