我正在使用模块ActionView::Helpers::TextHelper
来生成文本的摘录。如果一个单词不止一次出现,它就会摘录第一次出现。
<%= excerpt('你好,我是Ruby爱好者,Rails爱好者,永远不会回到PHP','爱人',:radius => 5)%>
"...lover,..."
我期待返回字符串是这样的,因为有两次出现'lover'这个词:
“......情人,......情人......”
如何才能让它显示多次出现的关键字?
我正在使用rails 3.2.11。
答案 0 :(得分:1)
摘录(text,phrase,options = {})链接:
从与第一个词组实例匹配的文本中提取摘录。 :radius选项扩展第一次出现的短语
每侧的摘录作为文档说明,只是你搜索的短语的第一个实例,而不是它的每个实例
答案 1 :(得分:0)
我一直在使用application_helper.rb中定义的multi_excerpt()方法
# Returns a summary of +text+ in the form of +phrase+ excerpts
#
# multi_excerpt('This string is is a very long long long string ', 'string', radius: 5)
# # => ...This string is i...long string ...
def multi_excerpt(text, phrase, options = {})
return unless text && phrase
radius = options.fetch(:radius, 10)
omission = options.fetch(:omission, "...")
raise if phrase.is_a? Regexp
regex = /.{,#{radius}}#{Regexp.escape(phrase)}.{,#{radius}}/i
parts = text.scan(regex)
"#{omission}#{parts.join(omission)}#{omission}"
end