erlang io format 格式化輸出總結

關於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])) 可以獲取到格式化輸出的字符串







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章