杰瑞科技汇

Java如何判断字符串是否包含某子串?

Java 判断字符串包含某个字符串的方法

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

Java如何判断字符串是否包含某子串?-图1
(图片来源网络,侵删)

使用 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() 并忽略大小写

如果需要忽略大小写进行匹配,可以先将字符串转换为统一大小写:

Java如何判断字符串是否包含某子串?-图2
(图片来源网络,侵删)
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() 通常是最佳选择。

Java如何判断字符串是否包含某子串?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇