为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取字符串中的第n次出现?

如何获取字符串中的第n次出现?

眼眸繁星 2019-11-26 15:35:37
我想用这样的东西来获取2nd发生的开始位置ABC:var string = "XYZ 123 ABC 456 ABC 789 ABC";getPosition(string, 'ABC', 2) // --> 16你会怎么做?
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

function getPosition(string, subString, index) {

   return string.split(subString, index).join(subString).length;

}


查看完整回答
反对 回复 2019-11-26
?
慕斯709654

TA贡献1840条经验 获得超5个赞

您也可以使用字符串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

*/


查看完整回答
反对 回复 2019-11-26
?
慕森卡

TA贡献1806条经验 获得超8个赞

根据肯尼贝克的答案,我创建了一个原型函数,如果未找到第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;

}


查看完整回答
反对 回复 2019-11-26
  • 3 回答
  • 0 关注
  • 554 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信