如何在 Erlang 中使用填充来格式化数字
我需要将整数的输出填充到给定长度。
例如,长度为4位,整数4的输出是“0004”而不是“4”。 我怎样才能在 Erlang 中做到这一点?
I need to pad the output of an integer to a given length.
For example, with a length of 4 digits, the output of the integer 4 is "0004" instead of "4". How can I do this in Erlang?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
对 Zed 的答案添加一些解释:
Erlang 格式规范 是:~ FPPadModC。
"~4..0B~n"
翻译为:并且
~n
是新行。adding a bit of explanation to Zed's answer:
Erlang Format specification is: ~F.P.PadModC.
"~4..0B~n"
translates to:and
~n
is new line.io:format("~4..0B~n", [Num]).
io:format("~4..0B~n", [Num]).
字符串:right(integer_to_list(4), 4, $0)。
string:right(integer_to_list(4), 4, $0).
io:format 的问题是,如果你的整数不'不适合,你会得到星号:
string:right 的问题是它扔掉了不适合的字符:
我还没有找到一个表现如我所期望的库模块(即打印我的数字,即使它不适合填充),所以我编写了自己的格式函数:(
可以使用 iolist_to_binary/1 来转换结果为二进制,或者您可以使用 lists:flatten(io_lib:format("~s", [结果])) 到将其转换为列表。)
The problem with io:format is that if your integer doesn't fit, you get asterisks:
The problem with string:right is that it throws away the characters that don't fit:
I haven't found a library module that behaves as I would expect (i.e. print my number even if it doesn't fit into the padding), so I wrote my own formatting function:
(You can use iolist_to_binary/1 to convert the result to binary, or you can use lists:flatten(io_lib:format("~s", [Result])) to convert it to a list.)