在Elixir中,如何使用字符串插值格式化数字

时间:2015-12-18 14:27:37

标签: elixir

我想打印出像

这样的字符串
IO.puts("Count: #{my_count}")

但是我希望输出中的前导零如

Count: 006

我该怎么做?文档在哪里?

3 个答案:

答案 0 :(得分:38)

您可以使用String.pad_leading/3

my_count
|> Integer.to_string
|> String.pad_leading(3, "0")

答案 1 :(得分:16)

我不确定Elixir中是否存在带填充格式化程序方法的整数到字符串。但是,您可以依赖Erix io模块,该模块可以使用:io原子在Elixir中访问。

iex(1)> :io.format "~3..0B", [6]
006:ok

您可以在this answer中找到解释。为方便起见,我在这里引用它:

  

"~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

答案 2 :(得分:12)

您还可以使用String.pad_leading/3

my_count
|> Integer.to_string
|> String.pad_leading(3, "0")

请注意v1.3.0的发行说明:

令人困惑的String.ljust / 3和String.rjust / 3 API已被软弃用,转而支持String.pad_leading / 3和String.pad_trailing / 3

这是软弃用。它的使用不会发出警告。