繁体   English   中英

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

[英]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.

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