2009-04-03 5 views

Antwort

4

Meistens sind die gleichen wie Aaron Hinni's answer, sondern werden versuchen, und 3 volle Sätze halten (dann auf 50 Worte gestutzt, damit die Sätze zu lang waren)

def truncate(text, max_sentences = 3, max_words = 50) 
    # Take first 3 setences (blah. blah. blah) 
    three_sentences = text.split('. ').slice(0, max_sentences).join('. ') 
    # Take first 50 words of the above 
    shortened = three_sentences.split(' ').slice(0, max_words).join(' ') 
    return shortened # bah, explicit return is evil 
end 

Auch wenn dieser Text jeder hat HTML, meine Antwort auf "Truncate Markdown?" könnte nützlich sein

+0

Ich gebe +1 dafür, gute Idee ;-) –

6

Angenommen, Ihre Wörter sind durch ein Leerzeichen begrenzt, können Sie so etwas tun.

stories.split(' ').slice(0,50).join(' ') 
0

Im Gebrauch etwas sehr ähnlich in einer Rails-Anwendung zu erweitern ("Affe-Patch") die Basis-String-Klasse.

habe ich lib/core_extensions.rb, die enthält:

class String 
    def to_blurb(word_count = 30) 
    self.split(" ").slice(0, word_count).join(" ") 
    end 
end 

ich dann config/initializers/load_extensions.rb geschaffen, die enthält:

require 'core_extensions' 

Jetzt habe ich die to_blurb() Methode auf allen meinen String-Objekte in der Rails-Anwendung.

Verwandte Themen