字数文本框javascript / php

时间:2015-07-25 16:41:06

标签: javascript php jquery

我正在尝试在文本框中实现一个单词计数器。我正在使用以下链接:

JS Fiddle
Second link

<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>

字计数器工作正常。但我的情况如下:

  1. for word&#34;最合适的匹配&#34;如果用户输入短格式为&#34; MSM&#34; ,则MSM也将被计为3个字。
  2. 以同样的方式,如果有大学的名字,像#&#34; DAV&#34;那么它也算作3个字。
  3. 请建议!!

2 个答案:

答案 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