计算单词和字符数

11

我一直在寻找一种使用jQuery在文本区域中添加单词和字符计数的方法,尽管我找到了许多限制字符和单词数量的插件。

我希望能够实时更新,所以每次用户添加一个字符或一个单词,计数器都会更新。

是否有一种简单的方法来检查单词和字符?


使用 .length 来检查字符数。除非是类似于论文这样的东西,否则单词计数通常并不重要,因为你可以制作一个非常长的单词。 - nhahtdh
1
$("textarea").html().split(" ").length - Zdeněk Mlčoch
4
抱歉听起来有点粗鲁,但我在谷歌上搜索了“jquery count words”而第一个结果正是你要找的答案。关于长度,只需使用.length即可。所以你并没有很努力地搜索。 - Christian
我已经搜索过了,没有找到任何有效的结果。 - user1919937
@evilone,这个问题并不含糊。为什么它被关闭了? - abu abu
5个回答

52

function wordCount(val) {
  var wom = val.match(/\S+/g);
  return {
    charactersNoSpaces: val.replace(/\s+/g, '').length,
    characters: val.length,
    words: wom ? wom.length : 0,
    lines: val.split(/\r*\n/).length
  };
}


var textarea = document.getElementById('text');
var result = document.getElementById('result');

textarea.addEventListener('input', function() {
  var wc = wordCount(this.value);
  result.innerHTML = (`
   <br>Characters (no spaces):  ${wc.charactersNoSpaces}
   <br>Characters (and spaces): ${wc.characters}
   <br>Words: ${wc.words}
   <br>Lines: ${wc.lines}
  `);
});
<textarea id="text" cols="30" rows="4"></textarea>
<div id="result"></div>


有没有办法使其实时更新? - user1919937
我在我的答案中添加了一个演示。 - Roko C. Buljan
可以了!谢谢!另外,我试图添加这个,但是我得到了一个语法错误,你知道它会做什么吗? - user1919937

9
char_count = $("#myTextArea").val().length;
word_count = $("#myTextArea").val().split(" ").length;

1
这是一种非常基本的方法,但它没有考虑到尾随空格或连续多个空格字符,在手动处理中不会被视为一个新单词。 - David Moores

0
var txt = $('.content')[0].text()
  , charCount = txt.length
  , wordCount = txt.replace( /[^\w ]/g, "" ).split( /\s+/ ).length
  ;
$( '#somwhereInYourDocument' ).text( "The text had " + charCount + " characters and " + wordCount +" words" );

阅读更多


-1

不使用jQuery:

this.innerHTML gives you the textarea content.  
this.innerHTML.length gives you the number of characters.

使用jQuery:

$(this).html()

等等。

我相信你可以想出一个简单的单词计数算法。


文本域中的内容是 HTML,而不是 value。 - Zdeněk Mlčoch
我已经测试过了。两种可能的方法是.val()和.html()。 - Zdeněk Mlčoch
虽然我将无jQuery部分更改为innerHTML,但只是检查了一下,你确实可以使用.value,它的值来自此上下文,两者都可以。 - TheZuck
W3C在HTML 4中未定义textarea元素的value属性。value属性可能取决于不同的浏览器。 - Zdeněk Mlčoch

-1
jQuery(document).ready(function(){
    var count = jQuery("#textboxid").text().length;
});

我不想限制单词和字符,我只想计算它们。 - user1919937
长度是属性,String 没有 length() 方法。 - Zdeněk Mlčoch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接