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