Rails 4.1 Ruby 2.0 Windows 8.1
我找到了number_to_currency助手,但没有找到currency_to_number。我试图将$ 8,000之类的东西转换为小数。那有没有Rails助手?有什么想法吗?
我一直在用这个:
number.to_s.gsub(/[^\d\.]/, '').to_f
除了数字和小数点之外,它还消除了所有内容,并且还处理了意外整数。我想知道我是否错过了某种currency_to_number助手。看起来我不是。我会接受其中一个答案。
答案 0 :(得分:8)
def currency_to_number currency
currency.to_s.gsub(/[$,]/,'').to_f
end
答案 1 :(得分:2)
number_to_currency格式化一个数字。如果您尝试将$ 8.000之类的内容转换为数字,则可能需要创建一个新方法来将字符串解析为数字。类似的东西:
result = "$8.000".gsub(/[^\d]/, '').to_f
改进了以下内容的转换:
" $ 8.000,00"
你需要一个更好的正则表达式。
答案 2 :(得分:2)
我刚刚在IRB中对此进行了测试,您希望将其放在某种方法中,以便与Rails一起使用。
price = "$8,000.90"
price.match(/(\d.+)/)[1].gsub(',','').to_f
#=> 8000.9
答案 3 :(得分:0)
没有内置方法,但像这样的方法可以解决问题
def currency_to_number(currency_value)
(currency_value.is_a? String) ? currency_value.scan(/[.0-9]/).join.to_d : currency_value
end
如果传递了String,则此方法返回Decimal,如果需要float,则使用“.to_f”。