ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Java字符串包含另一个字符串,返回所有下标
[打印本页]
作者:
东湖之滨
时间:
昨天 04:20
标题:
Java字符串包含另一个字符串,返回所有下标
Java字符串包含另一个字符串,返回所有下标
在Java中,如果你想找到一个字符串中所有子字符串的出现位置,你可以使用String类的indexOf()方法。这个方法可以找到子字符串第一次出现的位置,但如果你要找到所有出现的位置,你必要在一个循环中一连调用indexOf(),并且在每次调用后更新起始位置。
下面是一个示例代码,展示了如何找到一个字符串中所有子字符串的出现位置,并将它们存储在一个列表中:
import java.util.ArrayList;
import java.util.List;
public class FindAllOccurrences {
public static void main(String[] args) {
String text = "Hello world, hello everyone!";
String subString = "hello"; // 注意:大小写会影响结果
List<Integer> positions = new ArrayList<>();
int fromIndex = 0; // 起始位置
while (fromIndex != -1) {
// 查找子字符串的下一个出现位置
fromIndex = text.toLowerCase().indexOf(subString.toLowerCase(), fromIndex);
if (fromIndex != -1) {
positions.add(fromIndex); // 添加找到的位置
fromIndex += subString.length(); // 更新起始位置,避免重复查找同一个位置
}
}
// 输出所有出现的位置
System.out.println("子字符串的所有出现位置:");
for (int pos : positions) {
System.out.println(pos);
}
}
}
复制代码
注意事项:
巨细写敏感:默认情况下,indexOf() 是巨细写敏感的。如果你希望忽略巨细写,可以先将两个字符串都转换为小写或大写。我在上面的代码中使用了toLowerCase()方法来实现这一点。
性能:对于非常大的字符串或频仍的查找操纵,这种方法可能在性能上不是最优的。在这种情况下,考虑使用正则表达式大概更高效的算法(如KMP算法)可能会有所资助。但对于大多数一样寻常应用来说,这种方法已经足够。
起始位置:每次调用indexOf()时,你可以指定一个起始位置。这有助于制止在已经检查过的部分中重复查找。在每次找到一个匹配后,通过增加子字符串的长度来更新起始位置。
这种方法可以有效地找到一个字符串中所有子字符串的出现位置,并将它们存储在一个列表中。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4