当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在Elixir中,如何使用字符串插值格式化数字》经验,为你挑选了3个好方法。

我想打印出一个字符串

IO.puts("Count: #{my_count}")

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

Count: 006

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



1> Dmitry Bilet..:

您可以使用 String.pad_leading/3

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


我认为使用`String.pad_leading(3,"0")`会更清楚.

2> Simone Carle..:

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

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


绊倒我的是`:io.format`将格式化的字符串输出到组长并返回`:ok`.如果你需要在输出之前捕获字符串或者只是寻找类似`sprintf`的东西,你需要`:io_lib.format`,它将返回二进制文件/ Elixir`String.t`

3> Tsutomu..:

您还可以使用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

这是一种软弃用.它的使用不会发出警告.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有