4

我正在使用这个来源:

String fulltext = "I would like to create a book reader  have create, create ";

String subtext = "create";
int i = fulltext.indexOf(subtext);

但我只找到第一个索引,如何找到字符串中的所有第一个索引?(在本例中为三个索引)

4

4 回答 4

9

找到第一个索引后,使用indexOf接收起始索引作为第二个参数的重载版本:

public int indexOf(int ch, int fromIndex)返回此字符串中第一次出现指定字符的索引,从指定索引开始搜索。

继续这样做直到indexOf返回-1,表示没有更多匹配项可以找到。

于 2013-02-26T15:31:16.753 回答
4

您可以将正则表达式与 Pattern 和 Matcher 一起使用。Matcher.find()试图找到下一场比赛,Matcher.start()并会给你比赛的开始索引。

Pattern p = Pattern.compile("create");
Matcher m = p.matcher("I would like to create a book reader  have create, create ");

while(m.find()) {
    System.out.println(m.start());
}
于 2013-02-26T15:35:49.130 回答
4

使用接受起始位置的 indexOf 版本。循环使用它,直到它不再找到为止。

String fulltext = "I would like to create a book reader  have create, create ";
String subtext = "create";
int ind = 0;
do {
    int ind = fulltext.indexOf(subtext, ind);
    System.out.println("Index at: " + ind);
    ind += subtext.length();
} while (ind != -1);
于 2013-02-26T15:33:39.423 回答
0

您想创建一个 while 循环并使用indexof(String str, int fromIndex).

String fulltext = "I would like to create a book reader  have create, create ";
int i = 0;
String findString = "create";
int l = findString.length();
while(i>=0){

     i = fulltext.indexOf(findString,i+l);
     //store i to an array or other collection of your choice
 }
于 2013-02-26T15:32:40.293 回答