Ответ 1
Вы можете использовать String.rjust
my_count
|> Integer.to_string
|> String.rjust(3, ?0)
Я хочу распечатать строку типа
IO.puts("Count: #{my_count}")
Но я хочу, чтобы ведущие нули в выходе выглядели как
Count: 006
Как мне это сделать и где эта документация?
Вы можете использовать String.rjust
my_count
|> Integer.to_string
|> String.rjust(3, ?0)
Я не уверен, что в Elixir существует целочисленное целое с методом форматирования дополнений. Однако вы можете положиться на модуль Erlang io
, доступный в Elixir с атомом :io
.
iex(1)> :io.format "~3..0B", [6]
006:ok
Вы можете найти объяснение в этом ответе. Я цитирую его здесь для удобства:
"~3..0B"
переводится на:~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)
Вы можете либо использовать его напрямую, либо обернуть его в пользовательскую функцию.
iex(5)> :io.format "Count: ~3..0B", [6]
Count: 006:ok
Вы также можете использовать String.pad_leading/3:
my_count
|> Integer.to_string
|> String.pad_leading(3, "0")
Обратите внимание, что в примечании к выпуску v1.3.0 говорится:
Запутанный API String.ljust/3 и String.rjust/3 был мягко устарел в пользу String.pad_leading/3 и String.pad_trailing/3
Это мягкая усталость. Его использование не вызывает предупреждений.