是否存在解析人类数字的宝石? [英] Does there exist a gem to parse human numbers?

查看:41
本文介绍了是否存在解析人类数字的宝石?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有一个助手 #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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆