猿问

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

我想用这样的东西来获取2nd发生的开始位置ABC:


var string = "XYZ 123 ABC 456 ABC 789 ABC";

getPosition(string, 'ABC', 2) // --> 16

你会怎么做?


眼眸繁星
浏览 555回答 3
3回答

慕村9548890

function getPosition(string, subString, index) {   return string.split(subString, index).join(subString).length;}

慕斯709654

您也可以使用字符串indexOf而不创建任何数组。第二个参数是开始寻找下一个匹配项的索引。function nthIndex(str, pat, n){&nbsp; &nbsp; var L= str.length, i= -1;&nbsp; &nbsp; while(n-- && i++<L){&nbsp; &nbsp; &nbsp; &nbsp; i= str.indexOf(pat, i);&nbsp; &nbsp; &nbsp; &nbsp; if (i < 0) break;&nbsp; &nbsp; }&nbsp; &nbsp; return i;}var s= "XYZ 123 ABC 456 ABC 789 ABC";nthIndex(s,'ABC',3)/*&nbsp; returned value: (Number)24*/

慕森卡

根据肯尼贝克的答案,我创建了一个原型函数,如果未找到第n个事件,则将返回-1而不是0。String.prototype.nthIndexOf = function(pattern, n) {&nbsp; &nbsp; var i = -1;&nbsp; &nbsp; while (n-- && i++ < this.length) {&nbsp; &nbsp; &nbsp; &nbsp; i = this.indexOf(pattern, i);&nbsp; &nbsp; &nbsp; &nbsp; if (i < 0) break;&nbsp; &nbsp; }&nbsp; &nbsp; return i;}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答