目前是否有能够接受字符串的宝石,为此目的全部以美元为单位,并将它们转换为数字?一些例子是:
我知道在“5500”示例中我可以做“5500”.to_i,但导入的电子表格不一致,有些包括逗号和美元符号,而有些则没有。在Ruby中有一个很好的处理方式吗?
我尝试过类似money_string.scan(/\d/).join
的内容似乎很好,只是担心我会遇到我尚未找到的边缘情况,例如小数位。
答案 0 :(得分:39)
为什么不在调用.to_i
示例:
"$7,600".gsub(/\D/,'').to_i
对于浮点数:
"$7,600.90".gsub(/[^\d\.]/, '').to_f
答案 1 :(得分:9)
你可以这样做:
"$100.00".scan(/[.0-9]/).join().to_f
或to_i如果他们只是美元
答案 2 :(得分:7)
您可以使用Money gem
Money.parse("$100") == Money.new(10000, "USD")
答案 3 :(得分:0)
您应该能够使用Ruby RegEx对象修剪任何非数字字符。清理输入以删除小数点左侧除数字之外的任何内容,然后将仅数字字符串解析为数字。
(请注意,如果您获得实际的电子表格而不是CSV上下铺,则可能会显示value
属性,忽略屏幕上显示的文字。)
答案 4 :(得分:0)
def dollar_to_number(dollarPrice)
if dollarPrice
dollarPrice[1, dollarPrice.length].to_i
end
end
答案 5 :(得分:0)
您可以使用Monetize
宝石:
pry(main)> Monetize.parse("$7,600").to_i
=> 7600
https://github.com/RubyMoney/monetize
pry(main)> Monetize.parse("$7,600").class
=> Money