Я хочу преобразовать однозначные числа в двузначные числа следующим образом:
9 ==> 09
5 ==> 05
12 == 12
4 ==> 04
Я полагаю, что мог бы поставить кучу операторов if-else (если число меньше 10, то сделайте gsub), но считаю, что это ужасное кодирование. Я знаю, что в Rails есть number_with_precision, но я вижу, что это применимо только к десятичным числам. Любые идеи о том, как преобразовать однозначные числа в двузначные?
ruby-on-rails
ruby
sjsc
источник
источник
%02i
в этом случае, поскольку более очевидно, что вывод является и должен быть целым числом, d менее интуитивно понятен для людей, которые не так привыкли к использованиюsprintf
.'%02d'%1
без sprintfМного людей , использующих
sprintf
(что это правильно делать), и я думаю , что если вы хотите сделать это для строки , лучше иметь в видуrjust
иljust
методы:Это обеспечит выравнивание по
"4"
правому краю, обеспечив2
длину не менее символов и дополнив его'0'
.ljust
делает наоборот.источник
rjust
позволяет избежать затрат на анализ строки формата sprintf, преобразование строки в число и преобразование этого числа обратно в строку. Кроме того, (возможно) человеку легко понять, что код пытается сделать с первого взгляда.как насчет
"%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 .источник
Попробуйте это, должно сработать:
источник