我需要从字符串中删除/剪切前300个单词或字符。
这意味着,从一开始我就需要字符串中有限数量的字符。
像截断一样。
是否有这样做的功能?
答案 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
方法不需要参数。