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