ruby-on-rails - 如何根据 Ruby 数组中的单词替换字符串中的单词?

标签 ruby-on-rails ruby

我将如何做以下事情?我试过做这个 gsub 但我无法弄清楚如果 strings_to_highlight 数组很大的话什么才是真正有效的。干杯!

  string = "Roses are red, violets are blue"

  strings_to_highlight = ['red', 'blue']

  # ALGORITHM HERE

  resulting_string = "Roses are (red), violets are (blue)"

最佳答案

Regexp 有一个有用的 union将正则表达式组合在一起的函数。坚持使用正则表达式,直到出现性能问题:

string = "Roses are red, violets are blue"
strings_to_highlight = ['red', 'blue']

def highlight(str, words)
  matcher = Regexp.union words.map { |w| /\b(#{Regexp.escape(w)})\b/ }
  str.gsub(matcher) { |word| "(#{word})" }
end

puts highlight(string, strings_to_highlight)

关于ruby-on-rails - 如何根据 Ruby 数组中的单词替换字符串中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40137481/

相关文章:

ruby-on-rails - 如何使用Rails i18n后备功能

html - Bourbon Neat——响应式网格

ruby-on-rails - 即时构建 rails Form 和 Form_Fields

ruby - 在连接之前定义 Sequel 模型

ruby-on-rails - Ruby on Rails - RSpec - 重构 lambda 样式测试

ruby-on-rails - Ruby - 编写一个猜测单词中字母的程序

javascript - 从button_tag调用javascript函数?

mysql - 数据库级别的 Rails 舍入 float

ruby - 如何使用 VSCode 执行 Ruby 脚本?

ruby - gem eventmachine fatal error : 'openssl/ssl.h' file not found