如何检查字符串中字符的索引?
var str = 'alabama';
alert(str.indexOf('a'));
“indexOf”方法似乎只在字符第一次出现时起作用。有任何想法吗?
如何检查字符串中字符的索引?
var str = 'alabama';
alert(str.indexOf('a'));
“indexOf”方法似乎只在字符第一次出现时起作用。有任何想法吗?
要查找后续的匹配项,您需要将第二个参数提供给.indexOf
,重复从比找到的最后一次匹配项高的一个开始。
String.prototype.allIndexesOf = function(c, n) {
var indexes = [];
n = n || 0;
while ((n = this.indexOf(c, n)) >= 0) {
indexes.push(n++);
}
return indexes;
}
测试:
> "alabama".allIndexesOf("a")
[0, 2, 4, 6]
EDIT函数更新为允许指定 a fromIndex
, per String.indexOf
。
您可以编写自己的函数:
function charIndexes(string, char) {
var i, j, indexes = []; for(i=0,j=string.length;i<j;++i) {
if(string.charAt(i) === char) {
indexes.push(i);
}
}
return indexes;
}
var str = 'alabama',i=0, ci=[];
while((i=str.indexOf('a',i))!=-1) ci.push(i++);
alert(ci.join(', '));