2012-12-20 31 views
0

由於在正則表達式中不是專家,我認爲可以優化下一個代碼。我將不勝感激任何幫助。重構字符串.gsub

line = ".ui-icon-arrowrefresh-1-s { background-position: -176px -3px; }" 

line.gsub!(/-?\d+px/) do |match| 
    match.gsub(/-?\d+/) do |i| 
    i.to_i + 4 
    end 
end 

#=> ".ui-icon-arrowrefresh-1-s { background-position: -172px 1px; }" 
+0

「我認爲,未來的代碼可以被優化」是一條走不通的贈品,這應該是在http ://codereview.stackexchange.com而不是Stack Overflow。 –

回答

2
line.gsub(/-?\d+(?=px)/){|s| s.to_i+4} 
+0

很簡單,謝謝 –

2

你並不真的需要爲這一個任何前瞻或分組:

line.gsub(/-?\d+px/){|s| "#{s.to_i+4}px"} 
#=> ".ui-icon-arrowrefresh-1-s { background-position: -172px 1px; }" 
+0

Tranks。它也可以工作。在這種情況下,替換爲「(N)px」,但只用sawa的數字。 –