Estou tentando converter números de um único dígito em números de dois dígitos assim:
9 ==> 09
5 ==> 05
12 == 12
4 ==> 04
Eu acho que poderia colocar um monte de instruções if-else (se o número for menor que 10, então faça um gsub), mas acho que é uma codificação horrível. Eu sei que Rails tem number_with_precision, mas vejo que só se aplica a números decimais. Alguma ideia sobre como converter um dígito em dois dígitos?
ruby-on-rails
ruby
sjsc
fonte
fonte
%02i
para este caso, pois é mais óbvio que a saída é e deve ser um número inteiro, d é menos intuitivo para pessoas que não estão tão acostumadas a usarsprintf
.'%02d'%1
sem sprintfMuitas pessoas estão usando
sprintf
(que é a coisa certa a se fazer), e eu acho que se você quiser fazer isso com uma string , é melhor ter em mente os métodosrjust
eljust
:Isso tornará o
"4"
direito justificado, garantindo que tenha pelo menos2
caracteres de comprimento e o preencherá com'0'
.ljust
faz o oposto.fonte
rjust
evita o custo de analisar a string de formato de sprintf, convertendo uma string em um número e convertendo esse número de volta em uma string. Além disso, é (indiscutivelmente) fácil para um ser humano entender o que o código está tentando fazer à primeira vista.que tal
"%02d" % 9
? consulte http://www.ruby-doc.org/core-2.0/String.html#method-i-25 e http://www.ruby-doc.org/core-2.0/Kernel.html#method-i -sprintf .fonte
Experimente isso, deve funcionar:
fonte