我有一个故事文本字段,想要在快照页面中显示前几行 - 比如该字段的前50个单词。我怎么能用Ruby(在Rails上)做到这一点?
答案 0 :(得分:6)
假设你的单词是用空格分隔的,你可以这样做。
stories.split(' ').slice(0,50).join(' ')
答案 1 :(得分:4)
与Aaron Hinni's answer大致相同,但会尝试保留3个完整句子(如果句子太长则截断为50个单词)
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
此外,如果此文字包含任何HTML,我在"Truncate Markdown?"上的答案可能会有用
答案 2 :(得分:0)
在Rails应用程序中使用非常类似的东西来扩展(“猴子补丁”)基本的String类。
我创建了lib/core_extensions.rb
,其中包含:
class String
def to_blurb(word_count = 30)
self.split(" ").slice(0, word_count).join(" ")
end
end
然后我创建了config/initializers/load_extensions.rb
,其中包含:
require 'core_extensions'
现在我在Rails应用程序中的所有String对象上都有to_blurb()
方法。