0

我正在使用模块ActionView::Helpers::TextHelper从文本中生成摘录。如果一个词存在不止一次,它只会摘录第一次出现。

<%= excerpt('你好,我是 Ruby 爱好者,Rails 爱好者,永远不会回到 PHP', 'lover', :radius => 5) %>
"...lover,..."

我期待返回字符串类似于,因为“情人”一词出现了两次:

“……情人,……情人……”

如何让它工作以显示关键字的多次出现?

我正在使用导轨 3.2.11。

4

2 回答 2

1

摘录(文本,短语,选项= {})链接:

从匹配短语的第一个实例的文本中提取摘录。:radius 选项在第一次出现的短语的每一侧扩展摘录

正如文档所述,只是您搜索的短语的第一个实例,而不是它的每个实例

于 2013-07-15T16:54:32.380 回答
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

在这里链接我的相关帖子PR

于 2019-04-14T16:11:26.840 回答