1

文字列内で出現するすべての文字を検索する方法。たとえば、文字列は「Hello world」で、ユーザーは「L」が存在する文字列のインデックスを取得したいと考えています。例 2、3、および 9 にあります。 java-script/jquery でこのようなインデックスを見つける方法は?

4

5 に答える 5

1

たとえば、すべてのbを見つけて、それらをドキュメントに書き込みたい場合は、

var foo = "foo bar baz bat";

var pos = foo.indexOf("b");
while(pos > -1) {
    document.write(pos + "<br />");
    pos = foo.indexOf("b", pos+1);
}

出力:

4
8
12
于 2012-11-27T17:16:39.153 に答える
1

ここにいくつかの擬似コードがあります。これは、コーディングを開始する前に、問題のロジックを試して解決する方法です。

var indeces = {};

for(each character in string)
   if(character == characterImLookingFor)
       indeces.add(currentIndex);

return indeces;
于 2012-11-27T17:16:51.180 に答える
1
function getIndexes(str,char) {
    var index = str.indexOf(char);
    var indexes = [];

    while(index != -1) {
        indexes.push(index);
        index = str.indexOf(char,index+1);
    }

    return indexes;
}

使用法:

getIndexes("Hello world","l"); // returns [2,3,9]
于 2012-11-27T17:27:37.053 に答える
1

この回答から、次のコードのようなものを試すことができます:

function getIndicesOf(searchStr, str, caseSensitive) {
    var startIndex = 0, searchStrLen = searchStr.length;
    var index, indices = [];
    if (!caseSensitive) {
        str = str.toLowerCase();
        searchStr = searchStr.toLowerCase();
    }
    while ((index = str.indexOf(searchStr, startIndex)) > -1) {
        indices.push(index);
        startIndex = index + searchStrLen;
    }
    return indices;
}
于 2012-11-27T17:19:58.637 に答える
0

これを実現するために正規表現を使用することもできます。

var str = "Give me indexes of i in this string";
var regex = /i/gi, result;
while ((result = regex.exec(str)) ) {
    console.log(result.index);
}

//Output: 1, 8, 19, 21, 26, 32

デモ

于 2012-11-27T17:24:37.667 に答える