gpt4 book ai didi

javascript - JS拆分字符串并返回每个拆分的索引

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

我想在某个正则表达式上拆分文本,并在原始字符串中有一个拆分开始位置的索引。举个简单的例子:

"bla blabla haha".splitOnRegexWithIndex(whitespaceRegex)

需要的输出是

[["bla", 0], ["blabla", 4], ["haha", 11]]

这里的正则表达式可以是任何东西,而不仅仅是空格,所以分隔符不是固定大小的。

拆分是在正则表达式上完成的。我不想使用 indexOf 在起始字符串中查找 "blabla" 因为那将是 O(n2) 复杂度在我的场景中是 Not Acceptable 。

最佳答案

这是一个基于 .exec 的可能实现:

function split_with_offset(str, re) {
if (!re.global) {
throw "no no no no :(";
}
let results = [];
let m, p;
while (p = re.lastIndex, m = re.exec(str)) {
results.push([str.substring(p, m.index), p]);
}
results.push([str.substring(p), p]);
return results;
}

console.log(split_with_offset("bla blabla haha", /\s+/g));
console.log(split_with_offset(" ", /\s+/g));
console.log(split_with_offset("", /\s+/g));

警告:正则表达式必须设置 g 标志。

关于javascript - JS拆分字符串并返回每个拆分的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57295282/

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