0

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

但是,是否可以在替换之前将表达式应用于搜索结果和替换。

例如,在下面的代码中,虽然您可以使用匹配的字符串,\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
4

1 回答 1

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

文档:字符串#gsub

于 2013-09-01T09:03:58.577 回答