我怎样才能获得剥离后产生某个字符串的 html 部分

How can I get the portion of html that produces a certain string after stripped?

本文关键字:字符串 部分 html 剥离      更新时间:2023-09-26

基本上,我希望能够对某个html字符串调用一个函数,并返回出现的开始和结束索引的数组。它在控制台中如下所示:

var html = "<b>Hello</b>&nbsp;<mark>World</mark>";
> getIndices(html, "Hello'u00A0World");
< [[3, 29]]

这样做的最终目标是能够用一些标签包装 html,给定一个字符串以在文档中搜索,就像大多数浏览器的 ctrl+f 功能一样。

我在下面写了代码片段,但它的性能很糟糕,特别是在长网页上,当在整个身体的内部 html 上调用它时。这段代码绝对可以通过执行二进制搜索而不是蛮力和以不同的方式执行其他一些操作来优化,但我在实现时遇到了麻烦。对此有何看法?

function getIndices(html, searchTerm){
    var i = 0,
        indices = [];
    while(html.slice(i).replace(/<[^>]*>/g, '').indexOf(searchTerm) !== -1){
        i = html.indexOf(searchTerm[0], i);
        if(html.slice(i).replace(/<[^>]*>/g, '').indexOf(searchTerm) === 0){
            indices.push(i);
        }
        i++;
    }
    return indices;
}

谢谢!

创建一个树行者并检查哪些节点包含搜索字符串