检查字符串是否包含javascript中的单词数

时间:2013-06-03 06:07:07

标签: javascript regex string split

我想查看字符串中有多少单词

例如

 asdsd sdsds sdds 

3个字

问题是,如果两个子字符串之间有多个空格,则结果不正确

这是我的程序

function trim(s) {   
  return s.replace(/^\s*|\s*$/g,"")   
} 

var str = trim(x[0].value);
var parts = str .split(" ");
alert (parts.length);

如何解决问题?谢谢你的帮助

6 个答案:

答案 0 :(得分:2)

var parts = str .split(" ");
parts = parts.filter(function(elem, pos, self) {
     return elem !== "";
});

请试试这个。确保使用最新的浏览器来使用此代码。

答案 1 :(得分:2)

您可以使用带有字边界的match

var words = str.match(/\b\w+\b/g);

http://jsbin.com/abeluf/1/edit

答案 2 :(得分:1)

使用split方法很容易找到,但是如果有任何特殊字符,则需要进行排序。如果你的字符串中没有特殊字符,那么最后一行就足够了。

s = document.getElementById("inputString").value;
s = s.replace(/(^\s*)|(\s*$)/gi,"");
s = s.replace(/[ ]{2,}/gi," ");
s = s.replace(/\n /,"\n");
document.getElementById("wordcount").value = s.split(' ').length;

答案 3 :(得分:1)

请使用这个我已经在我的项目中使用过它:

function countWords(){
    s = document.getElementById("inputString").value;
    s = s.replace(/(^\s*)|(\s*$)/gi,"");
    s = s.replace(/[ ]{2,}/gi," ");
    s = s.replace(/\n /,"\n");
    document.getElementById("wordcount").value = s.split(' ').length;
}

答案 4 :(得分:0)

尝试:

function trim(s) {   
  return s.replace(/^\s*|\s*$/g,"")   
} 
var regex = /\s+/gi;
var value = "this ss ";
var wordCount = value.trim().replace(regex, ' ').split(' ').length;
console.log( wordCount );

答案 5 :(得分:0)

更短的模式,尝试这样的事情:

(\S+)

并且正则表达式引擎返回的匹配数将是您想要的结果。