2012-10-09 43 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"