我将如何做以下事情?我试过做这个 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/