Je veux imprimer une chaîne comme
IO.puts("Count: #{my_count}")
Mais je veux des zéros non significatifs dans la sortie comme
Count: 006
Comment dois-je procéder et où se trouve cette documentation?
Vous pouvez utiliser String.pad_leading/3
my_count
|> Integer.to_string
|> String.pad_leading(3, "0")
Je ne suis pas sûr qu'il existe une méthode de formatage entier en chaîne avec un formateur de remplissage dans Elixir. Cependant, vous pouvez compter sur le module Erlang io
qui est accessible dans Elixir avec le :io
atome.
iex(1)> :io.format "~3..0B", [6]
006:ok
Vous pouvez trouver une explication dans cette réponse . Je le cite ici pour plus de commodité:
"~3..0B"
Se traduit par:~F. = ~3. (Field width of 3) P. = . (no Precision specified) Pad = 0 (Pad with zeroes) Mod = (no control sequence Modifier specified) C = B (Control sequence B = integer in default base 10)
Vous pouvez soit l'utiliser directement, soit l'envelopper dans une fonction personnalisée.
iex(5)> :io.format "Count: ~3..0B", [6]
Count: 006:ok
Vous pouvez également utiliser String.pad_leading/ :
my_count
|> Integer.to_string
|> String.pad_leading(3, "0")
Notez que la note de publication de v1.3. dit:
L'API déroutante String.ljust/3 et String.rjust/3 a été déconseillée en faveur de String.pad_leading/3 et String.pad_trailing/3
Il s'agit d'une dépréciation douce . Son utilisation n'émet aucun avertissement.