我正在尝试在文本框中实现一个单词计数器。我正在使用以下链接:
<textarea name="myMessage" onkeyup="wordcount(this.value)"></textarea>
<script type=""text/javascript"">
var cnt;
function wordcount(count) {
var words = count.split(/\s/);
cnt = words.length;
var ele = document.getElementById('w_count');
ele.value = cnt;
}
document.write("<input type=text id=w_count size=4 readonly>");
</script>
字计数器工作正常。但我的情况如下:
请建议!!
答案 0 :(得分:1)
试试这个。我在手机上,所以我不能轻易做出一个例子 这会将全部大写的所有单词计为首字母缩略词
<textarea name="myMessage" onkeyup="wordcount(this.value)"></textarea>
<input type=text id=w_count size=4 readonly>
<script type=""text/javascript"">
function wordcount(message) {
var words = message.split(/\s/);
var cnt = words.length;
for (var i=0;i<cnt;i++) {
if (words[i].length>1 && words[i].match(/^[A-Z]*$/)) cnt += words[i].length-1)
}
var ele = document.getElementById('w_count');
ele.value = cnt;
}
</script>
答案 1 :(得分:1)
我做了一个简单的功能:
var regex = [/DAV/g, /MAC/g];
function countWords() {
var count = [];
regex.forEach(function(reg) {
var m = text.match(reg);
if (m) {
count = count.concat(m);
}
});
// the number of known acronym wrote in the text
var acronyms = count.length;
// how much words generated from an acronym (e.g. DAV === 3 words; AB === 2 words and so on)
var wordsFromAcronyms = count.join().replace(/,/g,'').length;
// how many words wrote (this is equal to your code)
var rawWords = text.match(/\S+/g).length;
// compute the real number
return rawWords - acronyms + wordsFromAcronyms;
}
它计算写入的首字母缩略词的数量(已知首字母缩略词的列表存储在regex
数组中),然后计算首字母缩略词(wordsFromAcronym
)生成多少单词,然后减去总字数(acronyms
)中的首字母缩写词(rawWords
),然后添加wordsFromAcronym
。
这是PLNKR。