2013-05-17 74 views
0

是否有可能使此功能更準確和最重要地計算單詞,計算可編輯div內的單詞?更準確地計算單詞

$(document).ready(function() { 

$('.word_count').each(function() { 
    var input = '#' + this.id; 
    var count = input + '_count'; 
    $(count).show(); 
    word_count(input, count); 
    $(this).keyup(function() { word_count(input, count) }); 
}); 

}); 

function word_count(field, count) { 

var number = 0; 
var matches = $(field).val().match(/\b/g); 
if(matches) { 
    number = matches.length/2; 
} 
$(count).text(number + ' word' + (number != 1 ? 's' : '') + ' aprox'); 

} 
+0

工作代碼更適合http://codereview.stackexchange.com –

+0

這個函數到底有多精確?向我們提供一個返回不精確計數的例子。它不能在div中工作的原因可能是因爲div的內容是通過.html()或.text()而不是.val()來檢索的。 – amik

+0

正則表達式呢? .textContent.split(/ \ w + /)。length –

回答

0

試試這個:

var numwords = $(field).val().match(/\S+/g).length;

+0

如果我想將它計爲4個單詞,每當括號出現時,我該如何編寫它? – Gaurav

+0

so countThis(「an example(sentence)」);應該返回6? –

0

從我個人的庫:

var s = "Is it possible to make this function to count words more accurately and most important, count the word inside a editable div?"; 
s = s.replace(/(^\s*)|(\s*$)/gi, ""); 
s = s.replace(/[ ]{2,}/gi, " "); 
s = s.replace(/\n /, "\n"); 
var countresult = s.split(' ').length; 
alert("The string:\""+s+"\" and the word count is "+countresult+"."); 

看到http://jsfiddle.net/farondomenic/XAvh6/的工作示例。

+0

如何解決您的問題?我很好奇你選擇哪種方法工作。 – Faron

0

我會使用.split()方法。抓住元素並製作一個數組。非常直接,易於編碼。我不認爲你需要更多的例子來了解你是否喜歡這個主意。任何問題,我將圍繞... W3 Schools Example