序数解析问题

spe*_*ool 1 ruby ruby-on-rails

Rails有一个很好的函数ordinalize,它将整数转换为友好的字符串表示.即1变为1st,2变为2nd,依此类推.我的问题是如何实现反向特征?

为了更一般,我想处理以下两种情况:

>> s = "First"
>> s.integerize
=> 1
>> s = 1st
>> s.integerize
=> 1
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种聪明的方法来做这个,而不是一个巨大的查找表或只是劈开最后两个字符.任何想法,将不胜感激.

Ken*_*Ken 7

to_i基本上是其中的1/2:

"72nd".to_i
=> 72
Run Code Online (Sandbox Code Playgroud)

它不检查有效性,但是如果你需要在"72x"之类的错误输入上失败,你可以重新定义并与原始输入字符串进行比较.

对于解析序数词,维基百科似乎非常有帮助.