Ruby:已经格式化字符串的前导零

时间:2012-06-04 09:33:15

标签: ruby

我无法理解为什么会发生这种情况:

s = "000301"
"%06d" % s             ====> "000193"
sprintf("%06d", s)     ====> "000193"

1 个答案:

答案 0 :(得分:5)

因为它被解释为八进制数。

在irb中尝试:

> 0301
=> 193

但是当你写:

> 301
=> 301

如果您想让它工作,请尝试使用String#to_i将其转换为整数:

"%06d" % s.to_i
sprintf("%06d", s.to_i)