我正在使用模块ActionView::Helpers::TextHelper
从文本中生成摘录。如果一个词存在不止一次,它只会摘录第一次出现。
<%= excerpt('你好,我是 Ruby 爱好者,Rails 爱好者,永远不会回到 PHP', 'lover', :radius => 5) %>
"...lover,..."
我期待返回字符串类似于,因为“情人”一词出现了两次:
“……情人,……情人……”
如何让它工作以显示关键字的多次出现?
我正在使用导轨 3.2.11。
我正在使用模块ActionView::Helpers::TextHelper
从文本中生成摘录。如果一个词存在不止一次,它只会摘录第一次出现。
<%= excerpt('你好,我是 Ruby 爱好者,Rails 爱好者,永远不会回到 PHP', 'lover', :radius => 5) %>
"...lover,..."
我期待返回字符串类似于,因为“情人”一词出现了两次:
“……情人,……情人……”
如何让它工作以显示关键字的多次出现?
我正在使用导轨 3.2.11。
摘录(文本,短语,选项= {})链接:
从匹配短语的第一个实例的文本中提取摘录。:radius 选项在第一次出现的短语的每一侧扩展摘录
正如文档所述,只是您搜索的短语的第一个实例,而不是它的每个实例
我一直在使用我的 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