0

文字列内の文字のインデックスを確認するにはどうすればよいですか?

var str = 'alabama';
alert(str.indexOf('a'));

「indexOf」メソッドは、char の最初の出現時にのみ機能するようです。何か案は?

4

3 に答える 3

6

後続のオカレンスを見つけるには、2 番目のパラメーターを.indexOfに指定する必要があります。これは、最後に見つかったオカレンスよりも 1 つ大きいものから繰り返し開始します。

String.prototype.allIndexesOf = function(c, n) {
    var indexes = [];
    n = n || 0;
    while ((n = this.indexOf(c, n)) >= 0) {
        indexes.push(n++);
    }
    return indexes;
}

テスト:

> "alabama".allIndexesOf("a")
[0, 2, 4, 6]

EDIT関数が更新され、 a fromIndex、 perを指定できるようになりましたString.indexOf

于 2012-05-08T17:18:24.243 に答える
3

独自の関数を作成できます。

function charIndexes(string, char) {
    var i, j, indexes = []; for(i=0,j=string.length;i<j;++i) {
        if(string.charAt(i) === char) {
            indexes.push(i);
        }
    }

    return indexes;
}
于 2012-05-08T17:18:07.510 に答える
0
var str = 'alabama',i=0, ci=[];

while((i=str.indexOf('a',i))!=-1)  ci.push(i++);

alert(ci.join(', '));
于 2012-05-08T17:54:14.250 に答える