当我使用正则表达式匹配一个数字时,我将其作为字符串获取:
?> 'TestingSubject2981'.match /\d+$/
=> #<MatchData "2981">
是否有可能在没有一些 s 的情况下将数字作为整数获得to_i
?
问题是正则表达式仅适用于字符串,不适用于其他数据类型。
正则表达式具有匹配数字的模式,但那些仍然只能找到代表数字的字符,而不是我们用于数学的二进制值。一旦引擎返回匹配项,它们仍然是字符,因此我们必须使用to_i
将它们转换为它们的二进制表示。
嗯,凯?
正则表达式不应该将字符串转换为整数(或任何其他类)。我能看到的唯一方法是使用String#to_i方法。我不明白你为什么要避免它。
您还可以使用从字符串中获取数字:
'TestingSubject2981'.scan(/\d+/)[0].to_i