Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5096736
  • 博文数量: 921
  • 博客积分: 16037
  • 博客等级: 上将
  • 技术积分: 8469
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 02:08
文章分类

全部博文(921)

文章存档

2020年(1)

2019年(3)

2018年(3)

2017年(6)

2016年(47)

2015年(72)

2014年(25)

2013年(72)

2012年(125)

2011年(182)

2010年(42)

2009年(14)

2008年(85)

2007年(89)

2006年(155)

分类: Erlang

2013-09-22 11:37:30

io:format的格式化参数。

c 输出多个重复的字符。

1.io:format(”~2c”,”a”).

结果:aa,标识输出字母2次。

2.io:format(”~2.1c”,”a”).

结果:_a,标识输出2个字符,1个是后面跟的字母,另一个位置用空格补充,从左开始,如果是”~-2.1c”是从右侧开始。

s 打印字符串,按手册说只接受list,atom,2进制的结构。

w,p是标准输出,支持term,区别是p会对输出的数据做一些分行处理,w会显示在一行。

io_lib:format("~2.10.0B",[2])
结果[["0","2"]]
2表示总位数,10B表示10进制,0表示不足的位补0

补充:

c 表示只接受ASCII码所表示的数字,如果传的参数是 字符串"a"或者字符a  都会报错


  1. 2>
  2. io:format("|~10.5c|~-10.5c|~5c|~n", [$a, $b, $c]).
  3. | aaaaa|bbbbb |ccccc|
  4. ok

10.5表示长度是10 打印5次  

~t表示按unicode输出


  1. 2>
  2. 1> io:format("~tc~n",[1024]).
  3. \x{400}
  4. ok
  5. 2> io:format("~c~n",[1024]).
  6. ^@
  7. ok

f,e,g 数据类型都是跟float
f默认保留6为小数,不足位补0,小数位数最少是1位


  1. 130> io:format("~f~n",[97.1]).
  2. 97.100000
  3. ok
  4. 131> io:format("~f~n",[97.16578]).
  5. 97.165780
  6. ok
  7. 132> io:format("~15.5f~n",[97.16578]).
  8.        97.16578
  9. ok
  10. 15.5表示 数字占15位,小数保留5位(保留时四舍五入)
  11. 133> io:format("~15.0f~n",[97.16578]).
  12. ** exception error: bad argument
  13.      in function io:format/3
  14.         called as io:format(<0.24.0>,"~15.0f~n",[97.16578])
  15. 134> io:format("~15.1f~n",[97.16578]).
  16.            97.2
  17. ok
  18. 135> io:format("~3.1f~n",[97.16578]).
  19. ***
  20. ok
  21. 如果给出的位数小于最小显示的位数(这里必须保留一位小数,所以(~4.1f)才能显示完全,小数点占一位 ,结构得到***

e默认保留6为小数,不足位补0,小数位数最少是2位


  1. 142> io:format("~8.3e~n",[97.16578]).
  2.  9.72e+1
  3. ok
  4. 143> io:format("~8.4e~n",[97.16578]).
  5. 9.717e+1
  6. ok

g 如果   值>=0.1  <10000.0  则按f规则显示,否则按e的规则。

s 按string语法规则输出 ,如果不带t ,参数可以使I/O 字符串,二进制数据或atom(不能使integer和float),
如果输出规则有t 参数类型数chardata()  ,
输出结构都无引号


  1. 152>
  2. io:format("~s~n",[{hey,hey,hey}]).
  3. ** exception error: bad argument
  4.      in function io:format/3
  5.         called as io:format(<0.24.0>,"~s~n",[{hey,hey,hey}])
  6. 153> io:format("~s~n",["{hey,hey,hey}"]).
  7. {hey,hey,hey}
  8. ok

  9. 155> A=io_lib:write({hey,hey,hey}).
  10. [123,["hey",44,"hey",44,"hey"],125]
  11. 156> io:format("~s~n",[A]).
  12. {hey,hey,hey}
  13. ok
  14. 157> io:format("~10.4s~n",["{hey,hey,hey}"]).
  15.       {hey
  16. ok
  17. 163> io:format("~ts~n",[a]).
  18. a
  19. ok

  20. 158> io:format("~s~n",[[a]]).
  21. ** exception error: bad argument
  22.      in function io:format/3
  23.         called as io:format(<0.24.0>,"~s~n",[[a]])

  24. 159> io:format("~s~n",[[97]]).
  25. a
  26. ok
  27. 这里正确因为[97] = "a" 所以参数不管是atom a还是字符串“a” 结果都是atom a
  28. 160> io:format("~s~n",[[970]]).
  29. ** exception error: bad argument
  30.      in function io:format/3
  31.         called as io:format(<0.24.0>,"~s~n",[[970]])
  32. 161> io:format("~ts~n",[[970]]).
  33. ?
  34. ok

w 用于输出erlang term




  1. 164> io:format("~w~n",[a]).
  2. a
  3. ok
  4. 165> io:format("~w~n",[[a]]).
  5. [a]
  6. ok
  7. 166> io:format("~w~n",[[97]]).
  8. [97]
  9. ok

p 和w相识的输出规则,不同的是w输出是没有格式的,字符串会显示位ascII编码

p的输出是有格式的 ,默认一行的显示的最大长度为80,可以自己定义显示的最大值。并且尽可能字符串输出


  1. 5> T = [{attributes,[[{id,age,1.50000},{mode,explicit},
  2. {typename,"INTEGER"}], [{id,cho},{mode,explicit},{typename,'Cho'}]]},
  3. {typename,'Person'},{tag,{'PRIVATE',3}},{mode,implicit}].
  4. ...
  5. 6> io:format("~w~n", [T]).
  6. [{attributes,[[{id,age,1.5},{mode,explicit},{typename,
  7. [73,78,84,69,71,69,82]}],[{id,cho},{mode,explicit},{typena
  8. me,'Cho'}]]},{typename,'Person'},{tag,{'PRIVATE',3}},{mode
  9. ,implicit}]
  10. ok
  11. 7> io:format("~62p~n", [T]).
  12. [{attributes,[[{id,age,1.5},
  13.                {mode,explicit},
  14.                {typename,"INTEGER"}],
  15.               [{id,cho},{mode,explicit},{typename,'Cho'}]]},
  16.  {typename,'Person'},
  17.  {tag,{'PRIVATE',3}},
  18.  {mode,implicit}]
  19. ok

W,P和w,p的区别在于可以控制terms输出的深度(深度的定义?)



  1. 239> io:format("~W~n",[T,9]).
  2. [{attributes,[[{id,age,1.5},{mode,explicit},{typename,...}],[{id,cho},{mode,...},{...}]]},{typename,'Person'},{tag,{'PRIVATE',3}},{mode,implicit}]
  3. ok
  4. 240> io:format("~W~n",[T,8]).
  5. [{attributes,[[{id,age,...},{mode,...},{...}],[{id,...},{...}|...]]},{typename,'Person'},{tag,{'PRIVATE',3}},{mode,implicit}]
  6. ok
  7. 241> io:format("~W~n",[T,7]).
  8. [{attributes,[[{id,...},{...}|...],[{...}|...]]},{typename,'Person'},{tag,{'PRIVATE',...}},{mode,implicit}]
  9. ok

B 同b 值为2-36  默认是10   控制按多少进制显示



  1. 248> io:format("|~3.16b|~n",[31]).
  2. | 1f|
  3. ok
  4. 11> io:format("~.16B~n", [31]).
  5. 1F
  6. ok
  7. 12> io:format("~.2B~n", [-19]).
  8. -10011
  9. ok
  10. 285> io:format("~15.16.2B~n", [-19]).
  11. 222222222222-13
  12. ok

X x 和B类似,比B多一个参数,显示在结果的前面



  1. 14> io:format("~X~n", [31,"1000#"]).
  2. 1000#31
  3. ok
  4. 15> io:format("~.16X~n", [-31,"0x"]).
  5. -0x1F
  6. ok

#和B类似,在结果的前面显示进制数


  1. 16> io:format("~.10#~n", [31]).
  2. 10#31
  3. ok
  4. 17> io:format("~.16#~n", [-31]).
  5. -16#1F
  6. ok
  7. ok

b
同B,但打印小写字母。
x
同X,但打印小写字母。
+
同#,但打印小写字母。

i
忽略了下一届。


原文链接:http://liangjianss.iteye.com/blog/716144
阅读(3236) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~