判断 Java 字符串是否包含另一个字符串354


在 Java 中,检查一个字符串是否包含另一个字符串是一个常见的任务。本文将全面介绍使用 Java 比较字符串包含的各种方法,包括内置函数、正则表达式和自定义算法。

内置函数

Java 提供了几个内置函数来比较字符串的包含关系:
contains():检查指定的字符串是否包含在另一个字符串内。它对大小写敏感。
equalsIgnoreCase():与 contains() 类似,但忽略大小写。
indexOf():返回指定字符串在另一个字符串中首次出现的索引。如果没有找到,则返回 -1。
lastIndexOf():返回指定字符串在另一个字符串中最后一次出现的索引。如果没有找到,则返回 -1。

示例:



String str1 = "Hello World!";
String str2 = "World";
((str2)); // true
(("hello world!")); // true
((str2)); // 6
((str2)); // 11

正则表达式

正则表达式是一种强大的工具,可以用于匹配字符串模式。可以使用正则表达式来检查字符串是否包含另一个字符串:
matches():使用正则表达式模式检查字符串是否匹配。
find():使用正则表达式模式查找字符串中的第一个匹配项。
replaceAll():使用正则表达式模式将字符串中的匹配项替换为另一个字符串。

示例:



String str1 = "Hello World!";
String str2 = "World";
Pattern pattern = (str2);
Matcher matcher = (str1);
(()); // false
(()); // true
(("Earth")); // Hello Earth!

自定义算法

除了内置函数和正则表达式外,还可以使用自定义算法来检查字符串是否包含另一个字符串:
循环比较:遍历较长字符串的每个字符,并检查它是否与较小字符串的第一字符匹配。如果匹配,则继续比较后续字符,直到两个字符串完全匹配或较小字符串结束。
Rabin-Karp 算法:一种滚动哈希算法,可以高效地查找字符串模式。
Knuth-Morris-Pratt (KMP) 算法:一种失配函数算法,可以加速字符串模式匹配。

示例(循环比较):



public static boolean containsString(String str1, String str2) {
for (int i = 0; i < () - () + 1; i++) {
boolean found = true;
for (int j = 0; j < (); j++) {
if ((i + j) != (j)) {
found = false;
break;
}
}
if (found) {
return true;
}
}
return false;
}

性能比较

不同方法的性能因数据大小和字符串特征而异。一般来说:
内置函数通常是最快的,但对于较长的字符串或复杂的模式,正则表达式或自定义算法可能更有效。
对于简单的匹配,循环比较是一种简单且高效的方法。
Rabin-Karp 和 KMP 算法擅长查找较长的模式。


Java 中有各种方法可以检查字符串是否包含另一个字符串。选择最合适的方法取决于特定要求和性能考虑。内置函数通常是简单任务的良好选择,但对于更复杂的情况,正则表达式或自定义算法可能更适合。

2024-12-05


上一篇:Java 中将十进制转换为二进制字符串

下一篇:Java 中将字节转换为二进制字符串