gpt4 book ai didi

javascript - 获取一个非常大的字符串中所有出现的子字符串

转载 作者:行者123 更新时间:2023-12-01 00:57:15 26 4
gpt4 key购买 nike

类似indexOf,但我需要找到所有索引。如果有 .indexOf 和 ,lastIndexOf ,是否应该有一个函数来获取所有索引的出现?我找不到。

请注意,该字符串非常大,大小约为 1MB,因此我需要最快的解决方案。

为了澄清,我需要获取子字符串在字符串中出现的所有位置。

例如

var str = "foo bar foo bar"; //the real string is 1MB
var indexes = str.indexOfAll('foo'); //the function I need
console.log(indexes); //should print [0,8];

想到的一件事是在重复循环中使用indexOf,查找第一个单词,在索引处剪切字符串,然后再次使用indexOf,依此类推,直到找不到任何内容。我不确定性能(剪切和重新创建大字符串)。

最佳答案

简单的解决方案:

var str = "...";
var searchKeyword = "...";

var startingIndices = [];

var indexOccurence = str.indexOf(searchKeyword, 0);

while(indexOccurence >= 0) {
startingIndices.push(indexOccurence);

indexOccurence = str.indexOf(searchKeyword, indexOccurence + 1);
}

如果您需要高性能的东西,您可以查看特定的文本搜索/索引算法,例如 Aho–Corasick algorithmBoyer–Moore string-search algorithm .

实际上取决于您的使用案例,以及您要搜索的文本是否正在变化或是否静态,并且可以提前编制索引以获得最佳性能。

关于javascript - 获取一个非常大的字符串中所有出现的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56446308/

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