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

properly parse formatted currency in european form

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

常规:

"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 位怎么办?测试用例太多。

有没有更好的方法来做到这一点(ruby)

我会选择 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"