我想获得的起始位置2nd发生ABC像这样的东西:
var string = "XYZ 123 ABC 456 ABC 789 ABC";
getPosition(string, 'ABC', 2) // --> 16
Run Code Online (Sandbox Code Playgroud)
你会怎么做?
Den*_*ret 145
function getPosition(string, subString, index) {
return string.split(subString, index).join(subString).length;
}
Run Code Online (Sandbox Code Playgroud)
ken*_*bec 61
您也可以使用字符串indexOf而不创建任何数组.
第二个参数是开始寻找下一个匹配的索引.
function nthIndex(str, pat, n){
var L= str.length, i= -1;
while(n-- && i++<L){
i= str.indexOf(pat, i);
if (i < 0) break;
}
return i;
}
var s= "XYZ 123 ABC 456 ABC 789 ABC";
nthIndex(s,'ABC',3)
/* returned value: (Number)
24
*/
Run Code Online (Sandbox Code Playgroud)
ilo*_*ett 16
根据kennebec的回答,我创建了一个原型函数,如果找不到第n个出现而不是0,它将返回-1.
String.prototype.nthIndexOf = function(pattern, n) {
var i = -1;
while (n-- && i++ < this.length) {
i = this.indexOf(pattern, i);
if (i < 0) break;
}
return i;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76320 次 |
| 最近记录: |