下面的代碼定義了包含正則表達式(鍵)和替換(值)的哈希。然後它遍歷散列並相應地替換字符串。使用反向引用和哈希時的Ruby gsub問題
簡單的字符串替換效果很好,但是當我需要計算resut在替換它之前(幾年到幾天的變化),它不會。事先定義哈希鍵是關鍵。
我錯過了什麼?任何幫助將非常感激。
a = "After 45 years we cannot use this thing."
hash = {
/(\d+) years/ => "#{$1.to_f*2}" + ' days',
/cannot/ => 'of course we CAN'
}
hash.each {|k,v|
a.gsub!(k) { v }
}
puts a
謝謝!
請注意,塊中年的值實際上是「45年」,而不是「45」。儘管如此,自「45年」以來,無所謂.to_f == 45.0'。 – sepp2k 2010-01-17 21:20:13
糟糕。你是對的;爲了避免混淆,我現在修復了使用'$ 1'的問題。 – 2010-01-17 23:39:52