String.prototype.indexOf
需要fromIndex
作爲其第二個參數 - 你可以簡單地找到前四組中,然後再從該索引搜索:
function findNthOccurrenceOf(search, n, string) {
var i = 0, j = 0, l = string.length;
while (j++ < n) {
i = string.indexOf(search, i) + 1;
if (i === 0) { i = -1; break; }
if (i >= l) break;
}
return i > 0 && i < l ? i - 1 : -1;
}
然而,這對於這樣的情況有點矯枉過正。你也可以只用分隔符分割字符串,並在索引N獲得的價值:
> var splitArray = 'https://foo.com/give/me/HELP/9835'.split('/')
["https:", "", "foo.com", "give", "me", "HELP", "9835"]
> splitArray.length > 4 ? splitArray[5] : "MISSING"
"HELP"
或者使用正則表達式,如果預期值始終處於一定的格式:
> var search = /\/(HELP)\//.exec(url);
["/HELP/", "HELP"]
> search ? search[1] : "MISSING"
"HELP"
爲什麼不一個簡單的拆分? 'var r ='https://foo.com/give/me/HELP/9835'.split('/')[5]' – hwnd 2015-02-07 02:37:50
哦!我不知道你可以通過一個索引號來拆分。萬分感謝! – Jascination 2015-02-07 02:38:57
@Jascination:這不是_「在索引號中傳遞給split [_],這只是訪問數組中的第6個元素來分割返回值。 – CBroe 2015-02-07 02:49:39