Ruby中Integer方法转换"08""09"字符串报错原因咨询
问题原因
Ruby的Integer()方法在处理带前导零的纯数字字符串时,默认会按照*八进制(基数为8)*规则解析输入:
- 八进制的合法数字范围为0~7,因此
"01"到"07"都是合法的八进制数值,可以正常转换为对应的十进制整数 "08"、"09"中包含八进制不支持的字符8、9,不符合八进制语法要求,因此会抛出ArgumentError异常。
解决方案
如果需要强制按照十进制规则转换带前导零的数字字符串,显式传入第二个参数10指定解析基数即可:
irb(main):001:0> Integer("08", 10) => 8 irb(main):002:0> Integer("09", 10) => 9
内容的提问来源于stack exchange,提问作者Sig
相关产品推荐
相关产品推荐

