我试图计算一个句子中的单词总数。我在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
我哪里出错?
答案 0 :(得分:2)
在这里,您将找到所需的一切。
http://jsfiddle.net/deepumohanp/jZeKu/
var regex = /\s+/gi;
var wordCount = value.trim().replace(regex, ' ').split(' ').length;
var totalChars = value.length;
var charCount = value.trim().length;
var charCountNoSpace = value.replace(regex, '').length;
$('#wordCount').html(wordCount);
$('#totalChars').html(totalChars);
$('#charCount').html(charCount);
$('#charCountNoSpace').html(charCountNoSpace);
答案 1 :(得分:0)
如果在字符串末尾有您的分隔符(在您的情况下为' '
),则拆分将拆分事件,从而导致在列表中创建最后一个[]
项。
答案 2 :(得分: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);
}
}
答案 3 :(得分:0)
您可以使用split(" ")
函数(包括引号内的空格)将字符串转换为仅包含单词的数组。然后你可以使用array.length
得到数组的长度,这基本上就是字符串中的单词数。