正确解析欧洲形式的格式化货币

时间:2015-10-23 06:17:11

标签: ruby regex parsing currency

是否有一种简单/方便的方法来解析价格金额的字符串,以便检测它是以常规形式还是以欧洲形式编写?

正则:

"3,599.90"

欧元:

 "3.599,90"
解析后

都应该是3,599.90

测试:

3.599,90 #=> 3599.90
3,599.90 #=> 3599.90
599.90 #=>  599.90
599,90 #=> 599.90
599 #=> 599
1,000,000 #=> 1000000
1.000.000 #=> 1000000

我可以看到,是否在.之前并推断出来,但如果数字少于4位呢?测试用例过多。

有没有更好的方法(红宝石)

1 个答案:

答案 0 :(得分:1)

我会选择money gem:

▶ "3,599.90".to_money
#⇒ #<Money fractional:359990 currency:USD>
▶ "3.599,90".to_money
#⇒ #<Money fractional:359990 currency:USD>
▶ "3.599,90".to_money.to_s
#⇒ "3599.90"
相关问题