是否存在解析人类数字的宝石? [英] Does there exist a gem to parse human numbers?
本文介绍了是否存在解析人类数字的宝石?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有一个助手 #number_to_human
打印大数,但是否有相反的帮助程序来解析大数,类似于 strtotime()?
无具体搜索结果.Ruby Toolbox 已死.
一个好处是接受语言环境,处理、
和.
.
A bonus would be to accept a locale, to handle ,
and .
.
我想解析诸如
- 100 万美元
- 1500 万美元
- 99.9 万
- 99.9 万美元
- 1.11 亿美元
- 1,234,567.89
- 987.654,00 欧元
- 11 亿美元
推荐答案
我找到了一些东西并对其进行了定制.
I found something and customized it.
def human_to_number(human)
return human unless human.is_a? String
return human if human.blank? # leave '' as is
human.downcase!
if human.index('k') || human.index('thousand')
multiplier = 1000
elsif human.index('m')
multiplier = 1_000_000
elsif human.index('b')
multiplier = 1_000_000_000
elsif human.index('t')
multiplier = 1_000_000_000_000
else
multiplier = 1
end
number = human.gsub(/[^0-9\.]/,'').to_f
number = number * multiplier
end
irb(main):003:0> d.human_to_number '$1.2 million'
=> 1200000.0
irb(main):004:0> d.human_to_number '$1.2 billion'
=> 1200000000.0
irb(main):005:0> d.human_to_number '$1.2k'
=> 1200.0
irb(main):006:0> d.human_to_number '1.2k'
=> 1200.0
irb(main):007:0> d.human_to_number '555.66k'
=> 555660.0
这篇关于是否存在解析人类数字的宝石?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文