Java字符串包含另一个字符串,返回所有下标

打印 上一主题 下一主题

主题 943|帖子 943|积分 2833

Java字符串包含另一个字符串,返回所有下标

在Java中,如果你想找到一个字符串中所有子字符串的出现位置,你可以使用String类的indexOf()方法。这个方法可以找到子字符串第一次出现的位置,但如果你要找到所有出现的位置,你必要在一个循环中一连调用indexOf(),并且在每次调用后更新起始位置。
下面是一个示例代码,展示了如何找到一个字符串中所有子字符串的出现位置,并将它们存储在一个列表中:
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. public class FindAllOccurrences {
  4.     public static void main(String[] args) {
  5.         String text = "Hello world, hello everyone!";
  6.         String subString = "hello"; // 注意:大小写会影响结果
  7.         List<Integer> positions = new ArrayList<>();
  8.         int fromIndex = 0; // 起始位置
  9.         
  10.         while (fromIndex != -1) {
  11.             // 查找子字符串的下一个出现位置
  12.             fromIndex = text.toLowerCase().indexOf(subString.toLowerCase(), fromIndex);
  13.             if (fromIndex != -1) {
  14.                 positions.add(fromIndex); // 添加找到的位置
  15.                 fromIndex += subString.length(); // 更新起始位置,避免重复查找同一个位置
  16.             }
  17.         }
  18.         
  19.         // 输出所有出现的位置
  20.         System.out.println("子字符串的所有出现位置:");
  21.         for (int pos : positions) {
  22.             System.out.println(pos);
  23.         }
  24.     }
  25. }
复制代码
注意事项:
巨细写敏感:默认情况下,indexOf() 是巨细写敏感的。如果你希望忽略巨细写,可以先将两个字符串都转换为小写或大写。我在上面的代码中使用了toLowerCase()方法来实现这一点。
性能:对于非常大的字符串或频仍的查找操纵,这种方法可能在性能上不是最优的。在这种情况下,考虑使用正则表达式大概更高效的算法(如KMP算法)可能会有所资助。但对于大多数一样寻常应用来说,这种方法已经足够。
起始位置:每次调用indexOf()时,你可以指定一个起始位置。这有助于制止在已经检查过的部分中重复查找。在每次找到一个匹配后,通过增加子字符串的长度来更新起始位置。
这种方法可以有效地找到一个字符串中所有子字符串的出现位置,并将它们存储在一个列表中。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

东湖之滨

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表