Ruby on Rails:如果数字低于10,如何在数字前添加零?

sjs*_*jsc 107 ruby ruby-on-rails

我希望将单个数字转换为两位数字,如下所示:

9 ==> 09
5 ==> 05
12 == 12
4 ==> 04
Run Code Online (Sandbox Code Playgroud)

我想我可以放一堆if-else语句(如果数字小于10,那么做一个gsub)但是这个编码很可怕.我知道Rails有number_with_precision但我看到它只适用于十进制数.有关如何将单位数转换为两位数的任何想法?

Rya*_*igg 190

很多人使用sprintf(这是正确的事情),我认为如果你想为字符串做这个,最好记住rjustljust方法:

"4".rjust(2, '0')
Run Code Online (Sandbox Code Playgroud)

这将"4"通过确保它至少是2字符长并用它填充来使右对齐'0'.ljust反其道而行之.

  • 如果你想允许字符串,这只比sprintf好.否则我会使用sprintf,因为如果我不小心使用了字符串,它会抛出一个异常(就像它应该的那样). (2认同)

Mar*_*off 139

你的意思是sprintf '%02d', n

irb(main):003:0> sprintf '%02d', 1
=> "01"
irb(main):004:0> sprintf '%02d', 10
=> "10"
Run Code Online (Sandbox Code Playgroud)

您可能希望将来引用格式表sprintf,但是对于此特定示例'%02d'意味着打印一个整数(d),其中至少占用2个字符(2),并使用零而不是空格(0)来填充左边距.


Sal*_*lil 8

试试这个,它应该工作:

abc= 5
puts "%.2i" %abc   >> 05


abc= 5.0
puts "%.2f" %abc   >> 5.00
Run Code Online (Sandbox Code Playgroud)