简体   繁体   English

如何gsub一个带有连接值的字符串?

[英]How to gsub a string with a concatenated value?

I need to change the value of a parameter (OFFSET=) by adding 20 to its value. 我需要通过将其值加20来更改参数(OFFSET =)的值。 So instead of having OFFSET=0 I get OFFSET=20. 因此,我得到的不是OFFSET = 0,而是OFFSET = 20。 Now, I can't be sure that the value for OFFSET is equal to 0, so I need to extract it. 现在,我不能确定OFFSET的值等于0,所以我需要提取它。 Here is what I have tried: 这是我尝试过的:

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

Now, to use #{} I obviously need a string with "" , which I can't use together with .gsub() or .match() . 现在,要使用#{}我显然需要带有""的字符串,但不能与.gsub().match()一起使用。 Right now I am not able to gsub because it can't get the value of aNumber . 现在,我无法gsub,因为它无法获取aNumber的值。 How can that be done? 那怎么办?

You can use gsub with a block: 您可以将gsub与一个块一起使用:

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

or if you have a longer string and only want to change myValue: 或者,如果您有一个更长的字符串,并且只想更改myValue:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM