Je cherche à convertir des nombres à un chiffre en nombres à deux chiffres comme ceci:
9 ==> 09
5 ==> 05
12 == 12
4 ==> 04
Je pense que je pourrais mettre un tas d'instructions if-else (si le nombre est inférieur à 10, alors faire un gsub) mais je suppose que c'est un codage horrible. Je sais que Rails a number_with_precision mais je vois que cela ne s'applique qu'aux nombres décimaux. Des idées sur la façon de convertir des chiffres uniques en deux chiffres?
ruby-on-rails
ruby
sjsc
la source
la source
%02i
pour ce cas car il est plus évident que la sortie est et est censée être un entier, d est moins intuitif pour les personnes qui ne sont pas aussi habituées à utilisersprintf
.'%02d'%1
sans sprintfBeaucoup de gens utilisent
sprintf
(ce qui est la bonne chose à faire), et je pense que si vous voulez faire cela pour une chaîne, il est préférable de garder à l'esprit les méthodesrjust
etljust
:Cela rendra le
"4"
droit justifié en veillant à ce qu'il soit au moins2
long de caractères et en le remplissant'0'
.ljust
fait le contraire.la source
rjust
évite le coût de l'analyse de la chaîne de format de sprintf, de la conversion d'une chaîne en nombre et de la reconversion de ce nombre en chaîne. De plus, il est (sans doute) facile pour un humain de comprendre ce que le code essaie de faire en un coup d'œil.et pourquoi
"%02d" % 9
? voir http://www.ruby-doc.org/core-2.0/String.html#method-i-25 et http://www.ruby-doc.org/core-2.0/Kernel.html#method-i -sprintf .la source
Essayez ceci, cela devrait fonctionner:
la source