2012-11-27 104 views
1

如何查找字符串中字符的所有出現位置。例如,字符串是:「Hello world」 和用戶現在想要的字符串'L'的索引。在例2,3和9中。如何在java-script/jquery中查找像這樣的索引?查找字符串中所有字符的索引

+2

你還嘗試過什麼嗎? –

+0

我知道如何找到第一次出現,但未能弄清楚如何查找所有出現的角色。 – mshahbazm

+0

使用循環次數可以找到,但我不知道要返回所有的索引。 – mshahbazm

回答

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

非常感謝你爲我提供了這麼好的代碼,正是我需要的。謝謝 – mshahbazm

+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 
+0

如果你清除你的cookies怎麼辦?你不會失去所有的帳戶信息? – thatidiotguy

1

下面是一些僞代碼。在你嘗試開始編碼之前,你應該試着找出問題的邏輯。

var indeces = {}; 

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

return indeces; 
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

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] 
相關問題