我有一根绳子,比如说'123'
,我想将它转换为整数123
.
我知道你可以简单地做some_string.to_i
,但这会转换'lolipops'
to 0
,这不是我想要的效果。当我试图用一种美好而痛苦的方式转换一些无效的东西时,我希望它在我脸上爆炸Exception
。否则,我无法区分有效的0
以及一些根本不是数字的东西。
EDIT:我一直在寻找标准的方法,没有正则表达式的欺骗。
Ruby 内置了此功能:
Integer('1001') # => 1001
Integer('1001 nights')
# ArgumentError: invalid value for Integer: "1001 nights"
正如在回答中指出的约瑟夫·佩科拉罗 https://stackoverflow.com/questions/49274/safe-integer-parsing-in-ruby/53359#53359,您可能需要监视有效的非十进制数字的字符串,例如以0x
对于十六进制和0b
对于二进制,以及可能更棘手的以零开头的数字,这些数字将被解析为八进制。
Ruby 1.9.2 为基数添加了可选的第二个参数,因此可以避免上述问题:
Integer('23') # => 23
Integer('0x23') # => 35
Integer('023') # => 19
Integer('0x23', 10)
# => #<ArgumentError: invalid value for Integer: "0x23">
Integer('023', 10) # => 23
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)