[英]How to gsub a string with a concatenated value?
我需要通过将其值加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
的值。 那怎么办?
您可以将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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.