2013-10-09 41 views
0

我需要通過在其值上加20來改變參數的值(OFFSET =)。因此,而不是OFFSET = 0,我得到OFFSET = 20。現在,我不能確定OFFSET的值是否等於0,所以我需要提取它。這是我曾嘗試:如何gsub串聯值的字符串?

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

現在,使用#{}我顯然需要""一個字符串,我不能.gsub().match()一起使用。現在我無法使用gsub,因爲它無法獲得aNumber的值。如何做到這一點?

+0

如果你把什麼例子這將是超級有用你想實現而不是談論你可以或不可以做什麼。 – phoet

+2

我運行了上述命令,並得到了輸出'OFFSET = 40'。這不是你想要的嗎? –

+0

是的,它現在有效 - 以前沒有出於某種奇怪的原因。感謝您的檢查! – Severin

回答

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