【问题标题】:English words (ONE, TWO, THREE) to number(1,2,3) in rubyruby 中的英语单词 (ONE, TWO, THREE) 到 number(1,2,3)
【发布时间】:2012-08-09 21:47:47
【问题描述】:

我正在尝试将单词/字符串转换为 Ruby 中的数字,例如:-

ONE => 1 
TWO => 2  
THREE => 3 
FOUR => 4 
etc...

我见过很多其他的例子(数字到单词);但是,我找不到如何将单词转换为数字的示例。如果我能在这方面获得任何见解或帮助,那就太好了。

【问题讨论】:

  • 我尝试使用大小写或哈希来实现,但这似乎很费力。
  • 您是要编写自己的解决方案还是使用库?数字必须达到多高?

标签: ruby numbers words


【解决方案1】:

这可能会有所帮助:http://www.rubyquiz.com/quiz25.html

编辑:错误地阅读问题。根据我在下面的评论,这是您可以解决此问题的一种方法。

如果 num_to_word(number) 是您将数字转换为单词的方法:

def number_hash_creator(min, max)
    number_hash = {}
    for num in (min..max)
        number_hash[num_to_word(num)] == num
    end
    number_hash
end

然后执行以下操作:

number_hash = number_hash_creator(min, max) # min and max are whatever you need them to be

number_hash['three']
=> 3

您还可以将类似的方法附加到字符串类,以便您可以执行"three".to_number 之类的操作

【讨论】:

  • 但他已经说过他可以反过来找到例子。测验是针对数字->描述。
  • 没错,出于某种原因,我读到了相反的内容。如果他可以将数字转换为单词,他可以做这样的事情来创建一个散列,然后根据散列检查单词。除此之外,可能有一个图书馆或其他地方可以做到这一点,但我从未听说过。
  • 感谢大家的洞察力。 @jimmydief - 我没有试过你发布的那个可能有用的。
【解决方案2】:

我为所有单词创建了一个最多为 20 的哈希,并且只为 10(三十、四十、五十等)创建了一个哈希。使用 Reg-ex 去掉两个单词并添加它们,例如 22 是 20+2=22 的加法;现在我的脚本只能工作到 100,但它可以扩展到超过 100 的数字等等。

【讨论】:

    【解决方案3】:

    我想你会发现本教程非常有趣,尤其是底部附近的代码:

    http://pine.fm/LearnToProgram/?Chapter=08

    【讨论】:

      猜你喜欢
      • 2022-12-02
      • 2016-07-29
      • 1970-01-01
      • 2013-12-31
      • 2019-02-23
      • 2012-07-26
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      相关资源
      最近更新 更多