如何在jQuery中解析关键字文本



假设我在网站上发表了一篇著名的演讲。搜索给定关键字,在整个文档中说"hello"并将出现次数保存为整数的最佳方法是什么?我真的不知道从哪里开始。

var wordcount;
$('#wrapper').each(function(e)
{
     $("div:contains('hello')"){ //all content will be in the wrapper div
     wordcount++;
});
});
我知道这可能是不对的,但希望我在正确的轨道上。谢谢你的帮助!

最简单的方法是返回RegExp match的长度:

var count = $("#wrapper div:contains('hello')").html().match(/hello/ig).length;
var numberOfMatches = $('div').text().match(/hello/ig).length;

不幸的是,这个div:contains只会触发一次。它正在查找包含该文本的所有div。除非你把每个单词都用div标签包起来…

var text = $('#wrapper').text();
var words[] = text.split(' ');
var count = 0;
for(var i=0; i<words.length; i++){ if(words[i].IndexOf("TheWord") >= 0){ count++; } }
这是一个非jquery方法,但它应该为您工作。

如果您想以交互方式(即使用动态字符串)完成此操作,则此实现是惯用的:

http://jsfiddle.net/entropo/S5uTg/

JS…

$("#keyword").keyup(function() {
    var value = $(this).val(),
        re = new RegExp(value, 'ig'),
        count = $("#speech").text().match(re).length;
    $("#result").text("Occurences: " + count);
});

HTML…

<div id="search-form">
    <legend>Search through this text</legend>
    <label for="keyword">Keyword</label>
    <input id="keyword" name="keyword" type="search"
        placeholder="e.g. - today" required="" autofocus="" />
    <div id="result"></div>            
</div>

最新更新