Ruby gsub有不同的替换

时间:2014-04-08 17:51:39

标签: ruby regex gsub

我有一个像这样的字符串

I run the "(.*)" query from the "(.*)" file

我有一个包含这些值的数组,['process_date','dates']

我需要将其中的值替换为我的字符串,所以它就像这样

I run the "process_date" query from the "dates" file.

原来我就是这样的

selected_item = selected_item.gsub(/\(\.\*\)/, input_value).rstrip

但现在我需要修改它以使用任意数量的输入。

任何帮助都将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您将块传递给gsub而不是替换字符串,则每次匹配都会yield,并且其结果将用作替换字符串。您可以在该块中将索引递增到值数组中,并从块中返回索引值:

input_values = ['process_date', 'dates']
i = -1
selected_item =
  selected_item.gsub(/\(\.\*\)/) {
    i += 1
    input_values[i]
  }.rstrip

或者,如果您不关心清空input_values数组,可以使用shift

selected_item = selected_item.gsub(/\(\.\*\)/) { input_values.shift }.rstrip