In ruby I am parsing a date in the following format: 24092008. I want to convert each section (year, month, date) into a number.
I have split them up using a regex which produces three Strings which I am passing into the Integer constructor.
date =~ /^([\d]{2})([\d]{2})([\d]{4})/ year = Integer($3) month = Integer($2) day = Integer($1)
When it hits the month line it crashes as follows:
`Integer': invalid value for Integer: '09' (ArgumentError)
It took me a while to realise that it’s interpreting the leading zero as Octal and 09 is not a valid Octal number (it works fine with ’07’).
Is there an elegant solution to this or should I just test for numbers less than 10 and remove the zero first?
Thanks.
I’m not familiar with regexes, so forgive me if this answer’s off-base. I’ve been assuming that $3, $2, and $1 are strings. Here’s what I did in IRB to replicate the problem:
But it looks like .to_i doesn’t have the same issues: