Java中StringBuilder查找字符如果存在多个肿么办

Java中的StringBuilder类中有一个indexOf功能是查找字母串中的字符位置,那如果存在多个符合条件的字符,那返回值是第一次遇到符合条件的字符吗,如果我想遇到后面的符合条件的字符要怎么办呢?

用substring切割,然后再对后面的调用indexof

StringBuilder sb = new StringBuilder("Hello World, World!");

char ch = 'o';
int[] indexes = new int[sb.length()];
int count = 0;

int index = sb.indexOf(String.valueOf(ch)); // 获取第一个符合条件的位置
while (index != -1) {
    indexes[count++] = index;
    index = sb.indexOf(String.valueOf(ch), index + 1); // 从下一个位置开始继续查找
}

int[] finalIndexes = Arrays.copyOfRange(indexes, 0, count); // 将有效的下标复制到新数组中
System.out.println(Arrays.toString(finalIndexes)); // 输出所有符合条件的位置下标
  • 这篇博客: Java学习-常用类(StringBuilder)中的 6.2 字符查询——indexOf() 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 语法:str.indexOf(strg,startIndex);

    StringBuilder str1 = new StringBuilder("13223");
    System.out.println(str1.indexOf("3",2)); // 结果:4