首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取字符串中的第n个匹配项?

如何获取字符串中的第n个匹配项?
EN

Stack Overflow用户
提问于 2013-01-23 21:00:01
回答 12查看 118.6K关注 0票数 125

我想获得ABC2nd事件的起始位置,如下所示:

var string = "XYZ 123 ABC 456 ABC 789 ABC";
getPosition(string, 'ABC', 2) // --> 16

你会怎么做?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 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
)

票数 181
EN

Stack Overflow用户

发布于 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
*/
票数 90
EN

Stack Overflow用户

发布于 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;
}
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14480345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档