我想获得ABC
的2nd
事件的起始位置,如下所示:
var string = "XYZ 123 ABC 456 ABC 789 ABC";
getPosition(string, 'ABC', 2) // --> 16
你会怎么做?
发布于 2013-01-23 21:01:10
const string = "XYZ 123 ABC 456 ABC 789 ABC";
function getPosition(string, subString, index) {
return string.split(subString, index).join(subString).length;
}
console.log(
getPosition(string, 'ABC', 2) // --> 16
)
发布于 2013-01-23 22:31:36
您还可以使用字符串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
*/
发布于 2013-12-16 03:42:33
根据kennebec的回答,我创建了一个原型函数,如果没有找到第n个实例,它将返回-1,而不是0。
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;
}
https://stackoverflow.com/questions/14480345
复制相似问题