Ruby on Rails: Comment ajouter ajouter des zéros devant un nombre si c'est moins de 10?
Je suis à la recherche pour convertir un seul chiffre à deux chiffres des numéros comme suit:
9 ==> 09
5 ==> 05
12 == 12
4 ==> 04
Je me dis que je pourrais mettre un tas de if-else (si le nombre est inférieur à 10, puis faire un gsub) mais la figure qui est horrible de codage. Je sais Rails a number_with_precision mais je vois qu'il s'applique uniquement pour les nombres décimaux. Toutes les idées sur la façon de convertir un chiffre à deux chiffres?
Vous devez vous connecter pour publier un commentaire.
Vouliez-vous dire
sprintf '%02d', n
?Vous pourriez vouloir de référence de la format de tableau pour
sprintf
dans l'avenir, mais pour cet exemple particulier'%02d'
impression d'un entier (d
) de prendre au moins 2 caractères (2
) et à gauche de remplissage avec des zéros à la place des espaces (0
).%02i
pour ce cas, car il est plus évident que la sortie est et est censé être un entier, d est moins intuitif pour les personnes qui ne sont pas habitués à l'utilisation desprintf
.'%02d'%1
sans sprintfBeaucoup de personnes utilisant
sprintf
(qui est la bonne chose à faire), et je pense que si vous voulez faire ce pour une chaîne il est préférable de garder à l'esprit larjust
etljust
méthodes:Cela rendra le
"4"
justifié à droite en s'assurant qu'il est au moins2
caractères de long et pavé avec'0'
.ljust
fait le contraire.rjust
évite le coût de l'analyse des sprintf de la chaîne de format, la conversion d'une chaîne en nombre, et de convertir ce nombre en une chaîne de caractères. De Plus, c'est (sans doute) facile pour un homme de comprendre ce que le code est en train de faire un coup d'œil.comment sur
"%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 .Essayer, cela devrait fonctionner:
Rails 5.2.2
Comme décrit ici: https://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html, vous pouvez utiliser la méthode de bibliothèque: