Ruby on Rails: Как добавить добавленные нули перед номером, если оно меньше 10?

Я хочу преобразовать однозначные числа в двузначные числа следующим образом:

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

Я полагаю, что могу поставить кучу инструкций if-else (если число меньше 10, а затем сделать gsub), но рисуйте это ужасное кодирование. Я знаю, что Rails имеет number_with_precision, но я вижу, что он применяется только к десятичным числам. Любые идеи о том, как преобразовать однозначные числа в две цифры?

Ответ 1

Вы имели в виду 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).

Ответ 2

Многие люди используют sprintf (что правильно делать), и я думаю, что если вы хотите сделать это для строки, лучше всего иметь в виду rjust и ljust:

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

Это приведет к правильному выравниванию "4", обеспечив длину не менее 2 символов и наложив его на '0'. ljust делает обратное.

Ответ 4

Попробуйте это, он должен работать:

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


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