所以我有这个单词计数脚本:
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; }
可悲的是它不起作用
答案 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');