2011-09-10 13 views
8

文章はどのようにして特定の数の単語(NB、文字ではない)に切り捨てられますか?文章を特定の単語数に切り捨てる

私はsplit(" ")を使用すると思いましたが、どのように単語を数えますか?例えば

  • Javascript word count cut off =>Javascript word count
  • Want better search results? See our search tips! =>Want better search
+7

何を試しましたか?何がうまくいかなかったのですか?正確に何が問題になっていますか? – Oded

+0

@Oded、答えの多くは文字列を切り詰める 'string length'です。その言葉が壊れるように。 –

+0

@fish:それはOdedが尋ねたものではありません! –

答えて

24

あなたはsplit[MDN]join[MDN]を使用することができます。

"Want better search results? See our search tips".split(" ").splice(0,3).join(" ") 
+0

すばらしい、すばやい返信。 –

+3

@fish:次回は、参照サイトとしてSOを使用するのではなく、あなたの問題を説明してください。乾杯! –

+1

@Tomalak Geret'kal、ok、ウェブテクノロジーを学ぶための初心者として私を許してください。 –

0

これまで説明したように、分割作業が行われます。しかし、RegExpを使用する場合は、文字列全体を分割する必要はありません。

var str = "Lions and tigers and bears"; 
var exp = /[A-Z|a-z]+/g; 

var a = exp.exec(str); // Lions 
var b = exp.exec(str); // and 
var c = exp.exec(str); // tigers 
+0

'[A-Z | a-z]'は 'A-Z'、' | '、' a-z'と一致します。文字クラスの中で、特別な意味を持たない '| '。大文字と小文字を区別しない場合は、 'i'修飾子を使用します。とにかく '\ w'を'/\ w +/g'と使う方がいいかもしれません。 –

+0

@Timbitsでも良い方法ですが、 'str'が中国語やラテン語、あるいはjsonデータであっても'/[A-Z | a-z] +/g'は使いにくいです。 –

3

これはMeteorアプリケーション用に書いた「もっと読む」機能です。 maxWordsパラメータを受け取り、jqueryのtext()メソッドを使用してhtmlタグを取り除きます。

希望すると助かります!

function readMore(string, maxWords) {  
    var strippedString = $("<p>" + string + "</p>").text().trim();  
    var array = strippedString.split(" "); 
    var string = array.splice(0, maxWords).join(" "); 

    if(array.length > maxWords) { 
     string += "..."; 
    } 

     return string ; 
} 
関連する問題