Geo*_*Geo 5 ruby localization numbers ruby-on-rails
是否有现成的解决方案可以解析下面的所有数字?
"300.00"
"2.300,00"
"2,300.00"
Run Code Online (Sandbox Code Playgroud)
尝试使用moneygem:
$ gem install money
然后你可以这样做:
require 'money'
test1 = Money.parse("300.00")
test2 = Money.parse("2.300,00")
test3 = Money.parse("2,300.00")
test1.currency # #<Money::Currency id: usd, priority: 1, symbol_first: true, thousands_separator: ,, html_entity: $, decimal_mark: ., name: United States Dollar, symbol: $, subunit_to_unit: 100, iso_code: USD, iso_numeric: 840, subunit: Cent>
test1.amount # 300.0
test1.dollars # 300.0
test1.cents # 30000
test1.currency_as_string # USD
test1.separator # .
test1.thousands_separator # ,
test1.delimiter # ,
Run Code Online (Sandbox Code Playgroud)
编辑:旧money宝石分为两部分:money和monetize.新money类仅处理在money对象之间创建,操纵和转换货币.
要将对象(包括字符串)解析为money对象,您应该使用monetizegem:
$ gem install monetize
Monetize.parse("USD 100")
Monetize.parse("£100")
Monetize.parse_collection("€80, $100")
Run Code Online (Sandbox Code Playgroud)