我知道在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
答案 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。