2015-02-07 61 views
0

一個簡單的問題很難給Google有效,所以非常抱歉!Javascript indexOf個性化的特定實例

我有一個URL字符串中,像這樣:

var url = https://foo.com/give/me/HELP/9835' 

我想使用JavaScript創建返回字符串的「幫助」部分的子字符串。這樣做的最簡單的方法我能想到的是獲取第5和第6個/的索引並創建一個子字符串,但我找不到有關如何執行此操作的文檔。

和想法?

+6

爲什麼不一個簡單的拆分? 'var r ='https://foo.com/give/me/HELP/9835'.split('/')[5]' – hwnd 2015-02-07 02:37:50

+0

哦!我不知道你可以通過一個索引號來拆分。萬分感謝! – Jascination 2015-02-07 02:38:57

+2

@Jascination:這不是_「在索引號中傳遞給split [_],這只是訪問數組中的第6個元素來分割返回值。 – CBroe 2015-02-07 02:49:39

回答

0

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"