gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:55:49 27 4
gpt4 key购买 nike

在 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)

我花了一段时间才意识到它将前导零解释为八进制数,而 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

关于ruby - 如何从可能具有前导零的字符串中解析数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/146668/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com