如何在字符串(Javascript)中出现字符时如何找到索引?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在字符串(Javascript)中出现字符时如何找到索引?相关的知识,希望对你有一定的参考价值。
嗨我正在尝试识别特定字符的索引,因为它每次都位于一个字符串中,并提供检测它的次数。
我想到的一种方法是基本上使用(str.replace(/[^char]/g, "").length)
查找它在字符串中的次数,然后使用str.lastIndexOf("char")
并在从该索引向前删除字符后再创建一个新字符串,直到我找不到它为止。
但是我不认为这是最有效的方法,所以如果你有更好的方法,请告诉我?
让我们说:var str = "123456789017899199999100001"
,我们需要每个1的索引以及在字符串中找到它的次数。
答案
您可以为值及其索引获取哈希表。然后将数组的长度作为计数。
var string = "123456789017899199999100001",
positions = Object.create(null);
[...string].forEach((v, i) => (positions[v] = positions[v] || []).push(i));
console.log(positions[1]);
console.log(positions[1].length);
console.log(positions);
.as-console-wrapper { max-height: 100% !important; top: 0; }
另一答案
使用regexp进行此类任务是过度的,你是对的,它可以通过线性遍历字符串更简单的方式完成:
function count(str, char) {
var rval = {indices:[], count:0};
for(var i=0; i<str.length; i++) {
if (str[i] === char) {
rval.indices.push(i);
rval.count++;
}
}
return rval;
}
那么对于你的字符串,它会产生:
count(str,'1') // {indices:[0,10,15,21,26],count:5}
你也可以简单地返回索引数组,其长度是总出现次数
以上是关于如何在字符串(Javascript)中出现字符时如何找到索引?的主要内容,如果未能解决你的问题,请参考以下文章
javascript 如何在JavaScript中替换所有出现的字符串?
如何在 JavaScript 中找到一个字符串在另一个字符串中所有出现的索引?