在Ruby中,我正在解析以下格式的日期:24092008。我想将每个部分(年份、月份、日期)转换为数字。
我使用正则表达式将它们拆分成三个字符串,并将它们传递给整数构造函数。
当它到达月份线时,会崩溃并显示以下内容:
我使用正则表达式将它们拆分成三个字符串,并将它们传递给整数构造函数。
date =~ /^([\d]{2})([\d]{2})([\d]{4})/
year = Integer($3)
month = Integer($2)
day = Integer($1)
当它到达月份线时,会崩溃并显示以下内容:
`Integer': invalid value for Integer: "09" (ArgumentError)
我花了一些时间才意识到它将前导零解释为八进制,而09不是有效的八进制数字(使用“07”可以正常工作)。
这个问题是否有优雅的解决方案,或者我应该只测试小于10的数字并先删除零呢?
谢谢。
"123abc".to_i # => 123
。这可能不是期望的结果。 - GarethInteger("09", 10) #=> 9
。 - Stefan