如何进行排除单个字符单词的 javascript 字数统计

How to do a javascript word count that excludes single character words

我想 运行 一个脚本来计算文本区域中的单词,排除所有单字母单词。 因此,如果有人输入句子 "This is a word count",我希望计数为 4,因为它排除了 "a"。

我有非常基本的 jQuery 知识,但能够计算包括单个字母单词在内的字数:

var wordCounts = {};
    jQuery("#65").keyup(function() {
        var matches = this.value.match(/\b/g);
        wordCounts[this.id] = matches ? matches.length / 2 : 0;
        var finalCount = 0;
        jQuery.each(wordCounts, function(k, v) {
            finalCount += v;
        });
        console.log(wordCounts);
    }).keyup();

我会想做类似

的事情吗
if (matches.length >= 2) {
 finalCount += v;
}

我似乎找不到任何可以做到这一点的东西,它可能很简单,请帮忙 :)

您可以通过将正则表达式修改为 \b\w{2,} 来避免单字母单词。这将查找一个单词边界,后跟一个 2 个字符或更长的单词。

var wordCounts = {};

jQuery("#65").on('input', function() {
  var matches = this.value.match(/\b\w{2,}/g).length;
  wordCounts[this.id] = matches; 
  console.log(wordCounts);
}).trigger('input');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="65">This is a word count</textarea>

另请注意,事件处理程序中的 each() 循环是多余的,因为 id 只会 select 单个元素。如果您希望它适用于多个元素,请对所有元素使用通用 class:

$(".count").on('input', function() {
  console.log(getWordCounts());
});

function getWordCounts() {
  let wordCounts = {};
  $('.count').each((i, el) => wordCounts[el.id] = el.value.match(/\b\w{2,}/g).length);
  return wordCounts;
}

console.log(getWordCounts());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="65" class="count">This is a word count</textarea>
<textarea id="foo" class="count">Lorem ipsum dolor sit amet consectetur adipiscing elit</textarea>