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。 恰恰相反。

试试这个,它应该工作:

 abc= 5 puts "%.2i" %abc >> 05 abc= 5.0 puts "%.2f" %abc >> 5.00