我有一个字符串,比如'123'
,我想把它转换成整数123
.
我知道你可以简单地做some_string.to_i
,但这将'lolipops'
转化为0
,这不是我想要的效果.我希望当我试图转换一些无效的东西时,它会在我的脸上爆炸,伴随着一个美好而痛苦的过程.否则,我无法区分有效的0
和根本不是数字的东西.
EDIT:.我在寻找一种标准的方式来做这件事,而不是用regex欺骗.
我有一个字符串,比如'123'
,我想把它转换成整数123
.
我知道你可以简单地做some_string.to_i
,但这将'lolipops'
转化为0
,这不是我想要的效果.我希望当我试图转换一些无效的东西时,它会在我的脸上爆炸,伴随着一个美好而痛苦的过程.否则,我无法区分有效的0
和根本不是数字的东西.
EDIT:.我在寻找一种标准的方式来做这件事,而不是用regex欺骗.
Ruby内置了以下功能:
Integer('1001') # => 1001
Integer('1001 nights')
# ArgumentError: invalid value for Integer: "1001 nights"
正如答案Joseph Pecoraro中所指出的,您可能需要注意有效的非十进制数字字符串,例如以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