ruby – 如何从可能具有前导零的字符串中解析数字?

ruby中,我使用以下格式解析日期:24092008.
我想将每个部分(年,月,日)转换为数字.

我使用正则表达式将它们拆分,它产生三个字符串,我将它传递给Integer构造函数.

date =~ /^([\d]{2})([\d]{2})([\d]{4})/
  year = Integer($3)
  month = Integer($2)
  day = Integer($1)

当它达到月线时,崩溃如下:

`Integer': invalid value for Integer: "09" (ArgumentError)

我花了一段时间才意识到它正在解释前导零,因为Octal和09不是有效的八进制数(它与“07”一起工作正常).

有没有一个优雅的解决方案,或者我应该测试小于10的数字并首先删除零?

谢谢.

解决方法

我不熟悉正则表达式,所以如果这个答案偏离基础,请原谅我.我一直认为$3,$2和$1是字符串.这是我在IRB中为复制问题所做的事情:
irb(main):003:0> Integer("04")
=> 4
irb(main):004:0> Integer("09")
ArgumentError: invalid value for Integer: "09"
    from (irb):4:in `Integer'
    from (irb):4
    from :0

但看起来.to_i没有相同的问题:

irb(main):005:0> "04".to_i
=> 4
irb(main):006:0> "09".to_i
=> 9

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...