繁体   English   中英

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

[英]Ruby on Rails: How do you add add zeros in front of a number if it's under 10?

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

9 ==> 09
5 ==> 05
12 == 12
4 ==> 04

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

很多人使用sprintf (这是正确的做法),我认为如果您想对字符串执行此操作最好记住rjustljust方法:

"4".rjust(2, '0')

这将通过确保它至少有2字符长并用'0'填充它来使"4"正确对齐。 ljust正好相反。

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

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

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

试试这个,它应该可以工作:

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

abc = 5.0
puts "%.2f" % abc # => 5.00

Rubocop建议使用format不是sprintf% 我认为它更直观:

format('%02d', 7) # => "07"
format('%02d', 12) # => "12"

Rails 5.2.2

如下所述: https//api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html ,您可以使用库方法:

number_with_precision(123, precision: 2) // 123.00

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM