2011-09-10 31 views
8

Làm cách nào để một câu được cắt ngắn thành một số từ nhất định (NB. Không phải chữ cái)?Cắt ngắn câu thành một số từ nhất định

Tôi đã nghĩ sử dụng split(" "), nhưng sau đó làm cách nào để tính từ?

Ví dụ:

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

Bạn đã thử gì? Cái gì không hiệu quả? Chính xác thì bạn gặp khó khăn gì? – Oded

+0

@Oded, nhiều câu trả lời sử dụng 'chuỗi length' để cắt các chữ cái. để các từ sẽ bị hỏng. –

+0

@fish: Đó không phải là những gì Oded hỏi! –

Trả lời

24

Bạn có thể sử dụng split[MDN]join[MDN].

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

tuyệt vời, nhờ có trả lời nhanh. –

+3

@fish: Lần sau, hãy đăng nỗ lực của bạn và mô tả những khó khăn của bạn, thay vì sử dụng SO làm trang web tham chiếu hoặc trang web "hãy làm điều này cho tôi". Chúc mừng! –

+1

@Tomalak Geret'kal, ok, tha thứ cho tôi như là một khởi đầu cho việc học công nghệ web. –

0

Tách công trình như bạn đã mô tả. Tuy nhiên, nếu bạn sử dụng RegExp, bạn không phải tách toàn bộ chuỗi:

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]' sẽ khớp với 'A-Z',' | 'và' a-z'. Bên trong một lớp nhân vật, '|' không có ý nghĩa đặc biệt. Nếu bạn muốn sử dụng phân biệt chữ hoa chữ thường, chỉ cần sử dụng công cụ sửa đổi 'i'. Tốt hơn có thể sử dụng '\ w' anyway:'/\ w +/g'. –

+0

@Timbits, đó cũng là một phương pháp tuyệt vời, nhưng nếu 'str' là từ Trung Quốc hoặc Latin, hoặc thậm chí một dữ liệu json, nó không phải là dễ sử dụng'/[A-Z | a-z] +/g'. –

3

Đây là chức năng "đọc thêm" tôi đã viết cho ứng dụng Meteor của mình. Nó chấp nhận tham số maxWords và dải các thẻ html bằng cách sử dụng phương thức text() của jquery.

Hy vọng điều đó sẽ hữu ích!

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 ; 
} 
Các vấn đề liên quan