是否存在解析人数的宝石?

问题描述 投票:0回答:1

有一个帮手#number_to_human打印大数字,但有一个相反的帮助解析大数字,类似于strtotime()

No specific search resultsRuby Toolbox死了。

奖金将是接受一个地区,处理,.

我想解析像

  • 100万美元
  • 1500万美元
  • 999千
  • $粘贴
  • $ 111 M
  • 1,234,567.89
  • €987.654,00
  • 11亿美元
ruby-on-rails
1个回答
2
投票

我找到了一些东西并定制了它。

  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
© www.soinside.com 2019 - 2024. All rights reserved.