0

我需要通过将 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}")

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

4

1 回答 1

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
于 2013-10-09T13:34:02.967 回答