我需要一种更好的方法来计算文本区域中的单词吗?

时间:2014-03-01 02:17:52

标签: javascript

我正在尝试计算textarea中的单词,基本上只是string.split(' ');

这种方法严重无望。我甚至无法弄清楚它在某些方面做了些什么。例如,我根本就没有文字,它给了我一个正数。

我不确定它是string.split(' '),方法还是<textarea>的某些内容,或两者的某些不兼容性。

这是我的代码:

    <body>

    <textarea rows="14" cols="50" id="text">

    </textarea>

    <br/>
    <br/>
    <br/>
    <br/>

    <button onclick="show()">Analyze</button>

    <div id="results"> 

    </div>


<script> 

    var a1 = [];     
    var words = 0; 

    function show() 
    {

        // GET WORDS 
        var s = document.getElementById("text").value; 
        a1 = s.split(' '); 
        words = a1.length; 


        document.getElementById("results").innerHTML = words;

       }

    </script>

    </body>

2 个答案:

答案 0 :(得分:4)

你在那里的换行仍然算在内!空格之间的空格也变成空字符串。

我会使用正则表达式,您可以根据您认为的单词轻松改变:

var WORD = /[a-zA-Z\d'’-]+/g;
⋮
var words = s.match(WORD).length;

答案 1 :(得分:0)

将不是数字,字母,下划线或撇号的所有内容转换为空格;然后将空格之间的事物计算为“单词”。

var numWords = myTextArea.replace(/[^\w'’]+/g,' ').split(/\s+/).length;