2012-10-09 51 views
2

我有一个字符串,我需要将它转换为RUBY的货币格式,并验证它是否与预期匹配。将字符串转换并存储为货币值

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

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

usa_price = $6,178.50 

aed_price = 22,693.01 

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

我试图做GSUB /扫描和IM困惑,现在,什么是最好的 在Ruby中实现这一点!

回答

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 
+1

此解决方案是否适用于非千美元金额,即178.50美元? –

+0

不,但现在它应该可以工作。 – megas

+0

数十万的数额如何? –

7

我会分裂的/,然后使用money宝石解析达出来,像这样:

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"