是否有Ruby gem或库提供解析序数的方法?

Aje*_*i32 5 ruby gem

我正在寻找一种方法来解析Ruby中的序数(第一,第二,第三等)并将它们转换为整数.你知道有没有这样做的图书馆吗?

Aje*_*i32 4

chronic当我意识到gem 将此作为解析日期过程的一部分时,我问了一半。安装 gem 后,您可以非常轻松地将序数转换为整数:

irb(main):001:0> require 'chronic'
=> true
irb(main):002:0> Chronic::Numerizer.numerize("eighty-fifth").to_i
=> 85
Run Code Online (Sandbox Code Playgroud)

编辑:不幸的是,似乎chronic没有正确解析序数“第二”:

irb(main):003:0> Chronic::Numerizer.numerize("twenty-second").to_i
=> 20
Run Code Online (Sandbox Code Playgroud)

这样做的原因是它chronic旨在解析日期和时间,并且“秒”可以是该上下文中的序数或时间单位。为了解决这个问题,你可以使用以下代码来猴子 patchchronic的类:Numerizer

Chronic::Numerizer::ORDINALS.insert(1, ['second', '2'])
Run Code Online (Sandbox Code Playgroud)

现在它可以工作了:

irb(main):005:0> Chronic::Numerizer.numerize("eighty-second").to_i
=> 82
Run Code Online (Sandbox Code Playgroud)

如果您确实将其用于chronic其预期目的,您可能不想破坏其内部结构。在这种情况下,您可以将源代码复制到Chronic::Numerizer一个新类中并使用该类。不要忘记添加['second', '2']ORDINALS新类中的常量。