Ruby on Rails:如何从字符串中删除/剪切前300个单词或字符?

时间:2011-12-05 17:48:42

标签: ruby-on-rails ruby

我需要从字符串中删除/剪切前300个单词或字符。

这意味着,从一开始我就需要字符串中有限数量的字符。

像截断一样。

是否有这样做的功能?

4 个答案:

答案 0 :(得分:15)

str = "many words here words words words ..."
first_500_words = str.split(" ").first(500).join(" ")
first_500_chars = str[0..500]

答案 1 :(得分:3)

根据文字大小和性能需求,一个选项是@text.split(/\s+/).slice(0,300).join(' ')

答案 2 :(得分:3)

如果你真的想截断字符级别,这是可取的,因为不同的字在显示长度上有很大的不同,请使用:

def truncate_words(text, length = 300, end_string = ' …')
  words = text.split()
  words[0..(length-1)].join(' ') + (words.length > length ? end_string : '')
end

我在这里找到:http://snippets.dzone.com/posts/show/804

如果你正在使用Rails,你也可以使用string.truncate,但它没有考虑单词边界。

答案 3 :(得分:0)

str = "this is really long string which I want to truncate..."

str.truncate 300, separator: " "

或者您更喜欢使用括号

str.truncate(300, separator: " ")

这是上述所有方案中最优雅的解决方案。正如您在主题中提到的,您使用Rails以便它可以工作。如果你用原始Ruby编写代码,你应该写这样的东西:

str.split.first(300).join " "

如果需要用空格分割文本,split方法不需要参数。