想要在ruby中显示文本字段的前50或60个单词吗?

时间:2009-04-03 14:27:48

标签: ruby-on-rails ruby

我有一个故事文本字段,想要在快照页面中显示前几行 - 比如该字段的前50个单词。我怎么能用Ruby(在Rails上)做到这一点?

3 个答案:

答案 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()方法。