gpt4 book ai didi

javascript - 在字符串(javascript)中查找多个字符的索引的最有效算法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:22:17 26 4
gpt4 key购买 nike

我正在寻找可用于在文本正文中搜索多个字符索引的最快方法。

例如:

searchString = 'abcdefabcdef'; 
searchChars = ['a','b'];
// returns {'a':[0,6], 'b':[1,7]}

最佳答案

您应该能够使用正则表达式查找每个字符的所有出现。像这样的东西:

function findIndexes(find, str) {
var output = {};
for (var i = 0; i < find.length; i++) {
var m = [];
var r = new RegExp('.*?' + find[i], 'g');
var ofs = -1;
while ((x = r.exec(str)) != null) {
ofs += x[0].length;
m.push(ofs);
}
output[find[i]] = m;
}
return output;
}

编辑:

做了一些修改,现在可以了。 :) 但是,由于 Javascript 没有 matches 方法来一次获取所有匹配项,因此与使用 indexOf... 相比并没有任何改进...:P

编辑 2:

但是,您可以使用正则表达式来查找任何字符,因此您只需将字符串循环一次,而不是为每个字符循环一次。 :)

function findIndexes(find, str) {
var output = {};
for (var i = 0; i < find.length; i++) output[find[i]] = [];
var r = new RegExp('.*?[' + find.join('') + ']', 'g');
var ofs = -1;
while ((x = r.exec(str)) != null) {
ofs += x[0].length;
output[x[0].substr(x[0].length-1,1)].push(ofs);
}
return output;
}

关于javascript - 在字符串(javascript)中查找多个字符的索引的最有效算法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3984499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com