如何进行排除单个字符单词的 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>
我想 运行 一个脚本来计算文本区域中的单词,排除所有单字母单词。 因此,如果有人输入句子 "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>