2011-09-10 15 views
8

Belirli bir sözcük sayısına nasıl bölünebilir (NB. Harf değil)?Belirli bir sayıdaki kelimeye kesilen cümleleri

split(" ")'u kullanmayı düşündüm, ancak sonra kelimeleri nasıl sayarım? Örneğin

:

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

Ne denediniz? Ne işe yaramadı? Tam olarak ne zorluklarla karşılaşıyorsunuz? – Oded

+0

@Oded, cevapların çoğu, harfleri kesmek için "string length" işlevini kullanır. böylece kelimeler kırılacak. –

+0

@fish: Oded'in sorduğu şey bu değildi! –

cevap

24

Sen split[MDN] ve join[MDN] kullanabilirsiniz. Bunu tarif ettiğim

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

harikaydı, hızlı bir cevapla teşekkürler. –

+3

@fish: Bir dahaki sefere lütfen bir referans site olarak SO kullanmamak veya "lütfen bunu benim için yap" sitesinden ziyade, teşebbüslerinizi gönderin ve zorluklarınızı tanımlayın. Şerefe! –

+1

@Tomalak Geret'kal, web teknolojisini öğrenmek için beni bir başlangıç ​​olarak affedin. –

0

Bölme, çalışır. Eğer bir RegExp kullanırsanız, ancak, bütün dize bölmek gerekmez:

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', '|' ve 'a-z' ile eşleşecektir. Karakter sınıfında, '|' özel bir anlam olarak. Büyük/küçük harf duyarsızlığı kullanmak istiyorsanız, sadece 'i' değiştiricisini kullanın. Yine de, \ w' kullanmak daha iyi olabilir: '/ \ w +/g'. –

+0

@Timbits, bu aynı zamanda harika bir yöntemdir, ancak eğer str 'çince veya latin sözcükler, hatta json verileri ise, kolay kullanılmaz'/[A-Z | a-z] +/g'. –

3

İşte benim Meteor uygulaması için yazdığı bir "devamı" fonksiyon. Bir maxWords parametresini kabul eder ve jquery'nin text() yöntemini kullanarak html etiketlerini çıkarır.

Umut eder!

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 ; 
} 
İlgili konular