天天看點

java 字元串 索引_字元串中所有出現的字元的索引

問題

以下代碼将列印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();