ruby – 如何从可能具有前导零的字符串中解析数字?
发布时间:2020-12-17 04:35:41 所属栏目:百科 来源:网络整理
导读:在 ruby中,我使用以下格式解析日期:24092008. 我想将每个部分(年,月,日)转换为数字. 我使用正则表达式将它们拆分,它产生三个字符串,我将它传递给Integer构造函数. date =~ /^([d]{2})([d]{2})([d]{4})/ year = Integer($3) month = Integer($2) day = In
在
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |