我希望将单个数字转换为两位数字,如下所示:
9 ==> 09
5 ==> 05
12 == 12
4 ==> 04
我想我可以放一堆if-else语句(如果数字小于10,那么就做一个gsub)但是数字可怕的编码。我知道Rails有number_with_precision但我看到它只适用于十进制数。关于如何将单位数转换为两位数的任何想法?
答案 0 :(得分:182)
很多人使用sprintf
(这是正确的做法),我想如果你想这样做换一个字符串,最好记住{ {1}}和rjust
方法:
ljust
通过确保"4".rjust(2, '0')
字符长度至少为"4"
个字符并使用2
填充它,可以使'0'
右对齐。 ljust
反其道而行之。
答案 1 :(得分:136)
您的意思是sprintf '%02d', n
吗?
irb(main):003:0> sprintf '%02d', 1
=> "01"
irb(main):004:0> sprintf '%02d', 10
=> "10"
您可能希望将来引用format table for sprintf
,但对于此特定示例,'%02d'
表示打印至少占用2个字符的整数(d
){{1 }}和左填充用零而不是空格(2
)。
答案 2 :(得分:36)
"%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。
答案 3 :(得分:8)
试试这个,它应该有效:
abc= 5
puts "%.2i" %abc >> 05
abc= 5.0
puts "%.2f" %abc >> 5.00
答案 4 :(得分:0)
如此处所述:https://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html,您可以使用库方法:
number_with_precision(123, precision: 2) // 123.00
答案 5 :(得分:0)
Rubocop在format
和sprintf
上推荐%
。我认为这更直观:
format('%02d', 7) # => "07"
format('%02d', 12) # => "12"