【发布时间】:2016-04-06 22:07:00
【问题描述】:
我有一个帮助器,用于在 Rails 中截断字符串,当我截断以句点结尾的句子时,它的效果很好。当句子以问号或感叹号结尾时,我应该如何修改代码以截断句子?
def smart_truncate(s, opts = {})
opts = {:words => 12}.merge(opts)
if opts[:sentences]
return s.split(/\.(\s|$)+/).reject{ |s| s.strip.empty? }[0, opts[:sentences]].map{|s| s.strip}.join('. ') + '...'
end
a = s.split(/\s/) # or /[ ]+/ to only split on spaces
n = opts[:words]
a[0...n].join(' ') + (a.size > n ? '... (more)' : '')
end
谢谢!!!
【问题讨论】:
-
你有没有考虑使用 Rails 提供的
truncate? -
我考虑过使用 truncate 但它不适合我的需要。我正在使用这个助手来预览内容而不会破坏它(太长)并且显示整个句子是我已经确定的。
-
这就是
:separator选项的用途。
标签: ruby-on-rails ruby string truncate