查找字符串中所有出现的字符的索引

时间:2012-11-27 17:14:17

标签: javascript jquery

如何在字符串中查找所有出现的字符。例如字符串是:“Hello world” 并且用户现在想要“L”存在的字符串的索引。这是在例子2,3和9中。如何在java-script / jquery中找到这样的索引?

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

这是一些伪代码。在尝试开始编码之前,应该尝试找出问题的逻辑。

var indeces = {};

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

return indeces;

答案 2 :(得分:1)

您可以尝试使用this answer中的以下代码:

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;
}

答案 3 :(得分: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]

答案 4 :(得分: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

DEMO