在单词计数中忽略小词

时间:2014-04-18 15:23:05

标签: javascript jquery html

所以我有这个单词计数脚本:

http://jsfiddle.net/ChrT8/1/

counter = function() {
    var value = $('#text').val();

    if (value.length == 0) {
        $('#wordCount').html(0);

        return;
    }

    var regex = /\s+/gi;
    var wordCount = value.trim().replace(regex, ' ').split(' ').length; 


    $('#wordCount').html(wordCount);

};

$(document).ready(function() {
    $('#count').click(counter);
    $('#text').change(counter);
    $('#text').keydown(counter);
    $('#text').keypress(counter);
    $('#text').keyup(counter);
    $('#text').blur(counter);
    $('#text').focus(counter);
});

如何让它忽略3个字符以下的单词?就像我希望它忽略这样的事情:“是,不,在,b,。,;,2”等

其他代码改进非常感谢,我不是程序员,我无法弄清楚

我尝试过添加

 (if this.value > 2) {  value.trim().replace(regex, ' ').split(' ').length; }

可悲的是它不起作用

3 个答案:

答案 0 :(得分:4)

您可以替换

var regex = /\s+/gi;
var wordCount = value.trim().replace(regex, ' ').split(' ').length;

var wordCount = value.split(/\s+/)
                     .filter(function(v){ return v.length>2 })
                     .length;

var wordCount = value.match(/\b\w{3,}\b/g).length;

答案 1 :(得分:1)

您的if语句不正确。尝试:

var regex = /\s+/gi;
var words = value.trim().replace(regex, ' ').split(' ');
var wordCount
for(var i = 0; i < words.length; i++){
    if(words[i].length > 2) wordCount++;
}

答案 2 :(得分:1)

我会使用input事件代替您对所有其他事件侦听器所做的事情,并使用filter过滤掉短字。

var $textarea = $('textarea'), $counter = $('.counter');

$textarea.on('input', function () {

  var wordCount = $textarea.val().split(' ').filter(function(word){
    return word.length > 2;
  }).length;

  $counter.html('There is ' + wordCount + ' words in here!');

}).trigger('input');

这是一个小型演示:http://jsbin.com/dajapono/2/edit?js,output