我正在使用这个来源:
String fulltext = "I would like to create a book reader have create, create ";
String subtext = "create";
int i = fulltext.indexOf(subtext);
但我只找到第一个索引,如何找到字符串中的所有第一个索引?(在本例中为三个索引)
我正在使用这个来源:
String fulltext = "I would like to create a book reader have create, create ";
String subtext = "create";
int i = fulltext.indexOf(subtext);
但我只找到第一个索引,如何找到字符串中的所有第一个索引?(在本例中为三个索引)
找到第一个索引后,使用indexOf
接收起始索引作为第二个参数的重载版本:
public int indexOf(int ch, int fromIndex)
返回此字符串中第一次出现指定字符的索引,从指定索引开始搜索。
继续这样做直到indexOf
返回-1
,表示没有更多匹配项可以找到。
您可以将正则表达式与 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());
}
使用接受起始位置的 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);
您想创建一个 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
}