如何在javascript中获取字符串中的总字数

如何在javascript中获取字符串中的总字数,javascript,regex,Javascript,Regex,我试着数一数一个句子中的单词总数。我在Javascript中使用了以下代码 function countWords(){ s = document.getElementById("inputString").value; s = s.replace(/(^\s*)|(\s*$)/gi,""); s = s.replace(/[ ]{2,}/gi," "); s = s.replace(/\n /,"\n"); alert(s.split(' ').leng

我试着数一数一个句子中的单词总数。我在Javascript中使用了以下代码

function countWords(){
    s = document.getElementById("inputString").value;
    s = s.replace(/(^\s*)|(\s*$)/gi,"");
    s = s.replace(/[ ]{2,}/gi," ");
    s = s.replace(/\n /,"\n");
    alert(s.split(' ').length);
}
因此,如果我给出以下输入

"Hello world"  -> alerts 2       //fine
"Hello world<space>" -> alerts 3 // supposed to alert 2
"Hello world world" -> alerts 3  //fine
“Hello world”->警报2//很好
“Hello world”->alerts 3//应该是alerts 2
“你好,世界”->警报3//很好

我哪里出错了?

如果字符串末尾有分隔符(在您的例子中是
'
),则拆分将拆分事件,从而在列表中创建最后一个
[]
项。

在这里您将找到所需的全部内容

请试试这个:

var word = "str";
function countWords(word) {
    var s = word.length;
    if (s == "") {
        alert('count is 0')
    }
    else {
        s = s.replace (/\r\n?|\n/g, ' ')
            .replace (/ {2,}/g, ' ')
            .replace (/^ /, '')
            .replace (/ $/, '');
        var q = s.split (' ');
        alert ('total count is: ' + q.length);
    }
}

您可以使用
split(“”)
函数(包括引号内的空格)将字符串转换为仅由单词组成的数组。然后,您可以使用
array.length
获得数组的长度,它本质上就是字符串中的字数。

您的代码格式总是这么糟糕吗?为您修复了它。您为什么要将
.length
进行比较?
?不进行比较,但如果是0个单词,则是警报时间
var word = "str";
function countWords(word) {
    var s = word.length;
    if (s == "") {
        alert('count is 0')
    }
    else {
        s = s.replace (/\r\n?|\n/g, ' ')
            .replace (/ {2,}/g, ' ')
            .replace (/^ /, '')
            .replace (/ $/, '');
        var q = s.split (' ');
        alert ('total count is: ' + q.length);
    }
}