如何在剥离后获取生成特定字符串的html部分?

时间:2014-11-17 02:31:04

标签: javascript jquery html dom string-search

基本上,我希望能够在一些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;
}

谢谢!

1 个答案:

答案 0 :(得分:1)

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