2013-06-03 31 views
2

我想檢查字符串中有多少單詞檢查一個字符串包含javascript中的多少個單詞

例如,

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); 

如何解決問題?謝謝你的幫助

回答

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; 
} 
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; 
2
var parts = str .split(" "); 
parts = parts.filter(function(elem, pos, self) { 
    return elem !== ""; 
}); 

請試試這個。確保您使用最新的瀏覽器來使用此代碼。

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); 
0

更短的模式,嘗試這樣的事情:

(\S+) 

和匹配的數量返回由正則表達式引擎將是你想要的結果。

相關問題