2017-10-10 9 views
0

大きな数字を印刷するヘルパー#number_to_humanがありますが、大きい数字を解析するために逆のヘルパーがあります。これはstrtotime()に似ていますか?人間の数字を解析する宝石はありますか?

No specific search resultsRuby Toolboxが死んでいます。

,.を処理するためのロケールを受け入れることができます。私は

  • $ 1メートル
  • $ 15百万
  • $ 999k
  • $ 111 M
  • 1,234,567.89
  • €987.654,00のようなものを解析したい

+0

使用して、あなたの問題を解決するために役立つかもしれない。このhttps://github.com/cyzanfar/Academy-Award-Best-Picture-scraper/blob/master/lib/academy_award_best_picture_scraper.rb#L37 を見てみましょう正規表現 – Cyzanfar

答えて

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 
関連する問題