Nik*_*Dim 5 javascript regex split
我想在某个正则表达式上拆分文本,并在原始字符串中获得拆分开始位置的索引。举个简单的例子:
"bla blabla haha".splitOnRegexWithIndex(whitespaceRegex)
Run Code Online (Sandbox Code Playgroud)
需要的输出是
[["bla", 0], ["blabla", 4], ["haha", 11]]
Run Code Online (Sandbox Code Playgroud)
此处的正则表达式可以是任何内容,而不仅仅是空格,因此分隔符不是固定大小。
拆分是在正则表达式上完成的。我不想在起始字符串中使用indexOffind "blabla",因为那将是 O(n 2 ) 复杂性,这在我的场景中是不可接受的。
这是基于以下可能的实现.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));Run Code Online (Sandbox Code Playgroud)
警告:正则表达式必须设置g标志。
| 归档时间: |
|
| 查看次数: |
1318 次 |
| 最近记录: |