問題
以下代碼将列印2
String word = "bannanas";
String guess = "n";
int index;
System.out.println(
index = word.indexOf(guess)
);
我想知道如何在字元串"bannanas"中擷取"n"("guess")的所有索引
預期結果将是:[2,3,5]
#1 熱門回答(122 贊)
這應該列印沒有-1的位置清單5776323755。
int index = word.indexOf(guess);
while (index >= 0) {
System.out.println(index);
index = word.indexOf(guess, index + 1);
}
它也可以作為aforloop完成:
for (int index = word.indexOf(guess);
index >= 0;
index = word.indexOf(guess, index + 1))
{
System.out.println(index);
}
[注意:ifguess可以比單個字元長,那麼通過分析guessstring,可以比上面的循環更快地循環通過word。這種方法的基準是412867409。但是,有利于使用這種方法的條件似乎并不存在。
#2 熱門回答(17 贊)
嘗試以下(最後不列印-1!)
int index = word.indexOf(guess);
while(index >= 0) {
System.out.println(index);
index = word.indexOf(guess, index+1);
}
#3 熱門回答(5 贊)
String string = "bannanas";
ArrayList list = new ArrayList();
char character = 'n';
for(int i = 0; i < string.length(); i++){
if(string.charAt(i) == character){
list.add(i);
}
}
結果将如下使用:
for(Integer i : list){
System.out.println(i);
}
或者作為一個數組:
list.toArray();