转换&将字符串存储为货币值

时间:2012-10-09 23:56:07

标签: ruby-on-rails ruby rubygems

我有一个字符串,我需要在RUBY中将其转换为货币格式 验证它是否与预期匹配。

String = "$6,178.50 USD / 22,693.01 AED"

我想把它分成两个不同的变量,比如

usa_price = $6,178.50

aed_price = 22,693.01

expected_output= $6,178.50 * 3.67 = 22,693.01(应与AED中的值匹配)

我试过做gsub / scan而且我现在很困惑,最好的方法是什么 在Ruby中实现这一点!!!

2 个答案:

答案 0 :(得分:7)

我会拆分/,然后使用money gem解析金额,如下所示:

require 'money'
amounts = "$6,178.50 USD / 22,693.01 AED".split("/")
amounts.map! { |amount| Money.parse(amount) }

然后,因为他们现在是Money个对象,你可以用它们赚钱:

>> amounts.first.format
=> "$6,178.50"

答案 1 :(得分:1)

如果你确定第一个数字是美元而第二个数字是AED且订单不会改变那么:

str = "$6,178.50 USD / 22,693.01 AED"

usa_price, aed_price = str.scan(/\d{1,2}?,?\d{1,3}\.\d{2}/)

#=> usa_price = 6,178.50, aed_price = 22,693.01