erlang io format 格式化输出总结

来源:互联网 发布:程序员在什么系统算 编辑:程序博客网 时间:2024/06/10 08:26

关于erlang的io format各种格式的介绍比较多,但都不全面,这里自己做一个总结。


3个输出函数

format(IoDevice, Format, Data)->

format(Format, Data)->

format(Format)->


Format标准格式:~F.P.PadModC

F表示输出长度和格式 ,    +10表示左对齐输出10位长度, -5表示右对齐输出5位长度,输出的Data长度不足时,用Pad填充
P表示输出精度,即截取Data的长度,输出精度P大于Data长度时,用Pad填充
Pad表示输出填充字符,上面2个都会用到,只能为一个character,默认为空格

如果F,P或者 Pad*,Data中下一个参数为 F or P的值

Mod控制类型的修饰,(目前只有t一种,用作unicode 转换)
C表示控制类型

常见控制类型:

~c   anscii码 将P作为输出该字母的次数
eg.> io:fwrite("|~10.5c|~-10.5c|~5c|~n", [$a, $b, $c]).|     aaaaa|bbbbb     |ccccc|ok
~f   浮点数 P为输出该浮点数小数点后位数,不足时用0填充
~s   字符串   P为截取Data的长度
~w   Erlang term 
~p   与~w类似,不过当多行时将自动换行
~W   比~w多一个参数,表示打印深度,Term深度超过该参数时,打印时用...代替表示
~n   换行符
~B   输出格式基于2...36进制,将P作为进制,默认为10进制 
  eg.  io:fwrite("~.16B~n", [31]). 输出31的16进制格式
~X   输出格式基于2...36进制的数字,2个参数,第一个是要输出的Data,第二个是在输出的数字之前带上的参数。
如: io:fwrite("~.16X~n", [31,"10#"]).    10#31  ok.
~b 类似与~B,输出小写字母
~x 类似与~X,输出小写字母
~+  类似与~#,输出小写字母


应用举例:

io:format("|~10.7.+s|",["abc"])  %%打印10长度,其中字符串长度为7,剩余用+号填充
|+++abc++++|

io_lib:format("~.*..f", [6, 192.2225]).  这里*代表Data中的参数6, f前面的一个.不知道什么意思,但不能省略或替换,否则会出错
["192.222500"]
 io:format("~.2..f", [192.2225]).
192.22
io:format("~8.2.0B,", [2])       输出Data的2进制形式,并凑齐8个长度,不足8时用0填充
00000010


lists:flatten(io_lib:format(Format,[Arg])) 可以获取到格式化输出的字符串







0 0
原创粉丝点击