Ruby on Rails: как добавить нули перед числом, если оно меньше 10? - PullRequest
101 голосов
/ 22 апреля 2010

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

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

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

Ответы [ 5 ]

184 голосов
/ 23 апреля 2010

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

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

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

136 голосов
/ 22 апреля 2010

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

36 голосов
/ 22 апреля 2010
8 голосов
/ 22 апреля 2010

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

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


abc= 5.0
puts "%.2f" %abc   >> 5.00
0 голосов
/ 24 января 2019

Рельсы 5.2.2

Как описано здесь: https://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html, Вы можете использовать библиотечный метод:

number_with_precision(123, precision: 2) // 123.00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...