2014-10-31 101 views
0

我正在處理將逗號添加到傳遞的數字的方法。 I.E. separate_commas(1000)將返回「1,000」或separate_commas(100000)將返回「100,000」...等。將逗號添加到數字字符串的重構方法

現在我已經解決了它,我想知道如何在沒有正則表達式的情況下重構。將不勝感激的建議,提前謝謝。紅寶石2.1.1p76

def separate_comma(x) 
    x=x.to_s 
    len=-4 
    until len.abs > x.length 
    x.insert(len, ',') 
    len-=4 
    end 
    return x 
end 
+1

你可以看看Rails的是如何實現它的'number_with_delimiter'方法:https://github.com /rails/rails/blob/8607577fc8f2d5767d9fc8001b3985fa541aa557/activesupport/lib/active_support/number_helper/number_to_delimited_converter.rb – 2014-10-31 17:56:08

+0

我還沒有使用過Rails,現在只使用Ruby。 – theartofbeing 2014-10-31 17:59:27

+0

重構這個的目標是什麼?例如。你有沒有想過如何在你的應用中支持國際化,這個功能應該做什麼(它是否適應本地化) – Brandin 2014-10-31 18:05:10

回答

0

不完全是漂亮,但它是一個小更紅寶石去年秋季

num.to_s.reverse 
     .split('').each_slice(3).to_a 
     .map{|num| num.reverse.join('')}.reverse.join(',') 
+0

這與@Yardboy之前的答案非常接近,儘管一些操作的順序不同(例如'num.reverse.to_s')。順便說一句,你不需要'to_a'。 – 2014-10-31 20:29:29