如何使用连接值gsub一个字符串?

时间:2013-10-09 12:10:48

标签: ruby-on-rails ruby gsub

我需要通过在其值中加20来更改参数的值(OFFSET =)。所以不是OFFSET = 0而是OFFSET = 20。现在,我不能确定OFFSET的值等于0,所以我需要提取它。这是我尝试过的:

aNumber  = "myValue=20".match(/myValue=(\d+)/)[1].to_i
bString  = "OFFSET=#{aNumber}"
newValue = bString.gsub(/OFFSET=#{aNumber}/, "OFFSET=#{aNumber + 20}")

现在,要使用#{}我显然需要一个""字符串,我不能与.gsub().match()一起使用。现在我无法gsub,因为它无法获得aNumber的值。怎么办?

1 个答案:

答案 0 :(得分:0)

您可以将gsub与块一起使用:

x = "myValue=20"
p x.gsub(/\d+/){|x| x.to_i + 20} # => myValue=20

或者如果您有一个更长的字符串并且只想更改myValue:

x = "firstValue=10, myValue=20, otherValue=30"
p x.gsub(/(?<=myValue=)(\d+)/){|x|  x.to_i + 20} # => firstValue=10, myValue=40, otherValue=30