Ruby on Rails:如果在10以下,你如何在数字前添加零?
我正在寻找将单个数字的数字转换为两位数的数字,如下所示:
9 ==> 09 5 ==> 05 12 == 12 4 ==> 04
我想我可以把一堆if-else语句(如果数字是10以下,然后做一个gsub),但数字是可怕的编码。 我知道Rails有number_with_precision,但我看到它只适用于十进制数字。 任何想法如何将单位数字转换为两位数字?
你的意思是sprintf '%02d', n
?
irb(main):003:0> sprintf '%02d', 1 => "01" irb(main):004:0> sprintf '%02d', 10 => "10"
你可能想在未来引用sprintf
的格式表 ,但是对于这个特殊的例子'%02d'
意味着打印一个至less包含2个字符( 2
)的整数( d
),用零填充而不是空格0
)。
很多人使用sprintf
(这是正确的做法),我想如果你想这样做一个string ,最好记住调整和ljust
方法:
"4".rjust(2, '0')
这将通过确保至less2
字符长度并将其填充为'0'
来使"4"
右alignment。 恰恰相反。
怎么样"%02d" % 9
? 请参阅http://www.ruby-doc.org/core-2.0/String.html#method-i-25和http://www.ruby-doc.org/core-2.0/Kernel.html#method-i -sprintf 。
试试这个,它应该工作:
abc= 5 puts "%.2i" %abc >> 05 abc= 5.0 puts "%.2f" %abc >> 5.00