将表达式应用于ruby搜索并替换为regex

时间:2013-09-01 09:00:37

标签: ruby regex

我知道在ruby中你可以使用gsub和正则表达式搜索和替换字符串。

然而,在替换之前,将表达式应用于搜索和替换的结果。

例如,在下面的代码中,虽然您可以将匹配的字符串与\0一起使用,但您无法对其应用表达式(例如\0.to_i * 10),这样做会导致错误:

shopping_list = <<LIST
3 apples
500g flour
1 ham
LIST

new_list = shopping_list.gsub(/\d+/m, \0.to_i * 10)
puts new_list #syntax error, unexpected $undefined

它似乎只适用于字符串文字:

shopping_list = <<LIST
3 apples
500g flour
1 ham
LIST

new_list = shopping_list.gsub(/\d+/m, '\0 string and replace')
puts new_list

1 个答案:

答案 0 :(得分:1)

这是你想要的吗?

shopping_list = <<LIST
3 apples
500g flour
1 ham
LIST

new_list = shopping_list.gsub(/\d+/m) do |m|
  m.to_i * 10
end

puts new_list 
# >> 30 apples
# >> 5000g flour
# >> 10 ham

文档:String#gsub