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/scan,现在我很困惑,在 Ruby 中实现这一目标的最佳方法是什么!!!

4

2 回答 2

7

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

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"
于 2012-10-10T00:13:12.637 回答
1

如果您确定第一个数字是 USD 而第二个数字是 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
于 2012-10-10T00:08:21.347 回答