Java 中字符串包含判断的全面指南104


在 Java 中,判断一个字符串是否包含另一个字符串是一个常见的任务。本文将详细探讨 Java 中用于检查字符串包含的各种方法,包括使用内置方法、正则表达式和自定义算法。

使用内置方法

Java 提供了几个内置方法来检查字符串包含,包括:
contains():此方法检查字符串是否包含另一个字符串,并返回一个布尔值。
indexOf():此方法搜索字符串中特定字符或字符串的第一个匹配项,并返回其索引,如果没有找到则返回 -1。
lastIndexOf():此方法搜索字符串中特定字符或字符串的最后一个匹配项,并返回其索引,如果没有找到则返回 -1。

String str = "Hello World";
// 检查字符串是否包含 "World"
boolean containsWorld = ("World");
// 检查字符串中是否包含 "H"
int indexOfH = ("H"); // 返回 0
int lastIndexOfH = ("H"); // 返回 7

使用正则表达式

正则表达式是一种强大的工具,可用于在字符串中查找模式。您可以使用正则表达式来检查字符串是否包含另一个字符串,如下所示:import ;
String str = "Hello World";
// 检查字符串是否包含 "World"
boolean containsWorld = (".*World.*", str);

使用自定义算法

如果您需要更灵活或可定制的字符串包含检查,您可以使用自定义算法。一种常见的算法是 Boyer-Moore 算法。public static boolean contains(String str, String substring) {
int n = ();
int m = ();
if (m > n) {
return false;
}
int[] last = new int[256];
for (int i = 0; i < 256; i++) {
last[i] = -1;
}
for (int i = 0; i < m; i++) {
last[(i)] = i;
}
int i = m - 1;
int j = m - 1;
while (i < n) {
if ((i) == (j)) {
if (j == 0) {
return true;
} else {
i--;
j--;
}
} else {
i += m - (j, 1 + last[(i)]);
j = m - 1;
}
}
return false;
}

性能比较

在选择字符串包含检查方法时,考虑性能非常重要。以下是一个使用不同方法检查字符串包含性能的粗略比较:
contains():最快
indexOf():中等
lastIndexOf():中等
正则表达式:慢
自定义算法(Boyer-Moore):最慢


在 Java 中检查字符串包含有多种方法。内置方法contains()是最简单的选择,但您也可以使用正则表达式或自定义算法来实现更灵活或可定制的解决方案。在选择方法时,请考虑性能和您需要的特定用例。

2024-10-20


上一篇:Java 静态代码块:全面剖析

下一篇:Java 数组随机排序:快速深入指南