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 都会报错
10.5表示长度是10 打印5次
~t表示按unicode输出
f,e,g 数据类型都是跟float
f默认保留6为小数,不足位补0,小数位数最少是1位
e默认保留6为小数,不足位补0,小数位数最少是2位
g 如果 值>=0.1 <10000.0 则按f规则显示,否则按e的规则。
s 按string语法规则输出 ,如果不带t ,参数可以使I/O 字符串,二进制数据或atom(不能使integer和float),
如果输出规则有t 参数类型数chardata() ,
输出结构都无引号
w 用于输出erlang term
p 和w相识的输出规则,不同的是w输出是没有格式的,字符串会显示位ascII编码
p的输出是有格式的 ,默认一行的显示的最大长度为80,可以自己定义显示的最大值。并且尽可能字符串输出
W,P和w,p的区别在于可以控制terms输出的深度(深度的定义?)
B 同b 值为2-36 默认是10 控制按多少进制显示
X x 和B类似,比B多一个参数,显示在结果的前面
#和B类似,在结果的前面显示进制数
b
同B,但打印小写字母。
x
同X,但打印小写字母。
+
同#,但打印小写字母。
i
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 都会报错
- 2>
- io:format("|~10.5c|~-10.5c|~5c|~n", [$a, $b, $c]).
- | aaaaa|bbbbb |ccccc|
- ok
10.5表示长度是10 打印5次
~t表示按unicode输出
- 2>
- 1> io:format("~tc~n",[1024]).
- \x{400}
- ok
- 2> io:format("~c~n",[1024]).
- ^@
- ok
f,e,g 数据类型都是跟float
f默认保留6为小数,不足位补0,小数位数最少是1位
- ሀ踀130> io:format("~f~n",[97.1]).
- 97.100000
- ok
- 131> io:format("~f~n",[97.16578]).
- 97.165780
- ok
- 132> io:format("~15.5f~n",[97.16578]).
- 97.16578
- ok
- 15.5表示 数字占15位,小数保留5位(保留时四舍五入)
- 133> io:format("~15.0f~n",[97.16578]).
- ** exception error: bad argument
- in function io:format/3
- called as io:format(<0.24.0>,"~15.0f~n",[97.16578])
- 134> io:format("~15.1f~n",[97.16578]).
- 97.2
- ok
- 135> io:format("~3.1f~n",[97.16578]).
- ***
- ok
- 如果给出的位数小于最小显示的位数(这里必须保留一位小数,所以(~4.1f)才能显示完全,小数点占一位 ,结构得到***
e默认保留6为小数,不足位补0,小数位数最少是2位
- 142> io:format("~8.3e~n",[97.16578]).
- 9.72e+1
- ok
- 143> io:format("~8.4e~n",[97.16578]).
- 9.717e+1
- ok
g 如果 值>=0.1 <10000.0 则按f规则显示,否则按e的规则。
s 按string语法规则输出 ,如果不带t ,参数可以使I/O 字符串,二进制数据或atom(不能使integer和float),
如果输出规则有t 参数类型数chardata() ,
输出结构都无引号
- 152>
- io:format("~s~n",[{hey,hey,hey}]).
- ** exception error: bad argument
- in function io:format/3
- called as io:format(<0.24.0>,"~s~n",[{hey,hey,hey}])
- 153> io:format("~s~n",["{hey,hey,hey}"]).
- {hey,hey,hey}
- ok
- 155> A=io_lib:write({hey,hey,hey}).
- [123,["hey",44,"hey",44,"hey"],125]
- 156> io:format("~s~n",[A]).
- {hey,hey,hey}
- ok
- 157> io:format("~10.4s~n",["{hey,hey,hey}"]).
- {hey
- ok
- 163> io:format("~ts~n",[a]).
- a
- ok
- 158> io:format("~s~n",[[a]]).
- ** exception error: bad argument
- in function io:format/3
- called as io:format(<0.24.0>,"~s~n",[[a]])
- 159> io:format("~s~n",[[97]]).
- a
- ok
- 这里正确因为[97] = "a" 所以参数不管是atom a还是字符串“a” 结果都是atom a
- 160> io:format("~s~n",[[970]]).
- ** exception error: bad argument
- in function io:format/3
- called as io:format(<0.24.0>,"~s~n",[[970]])
- 161> io:format("~ts~n",[[970]]).
- ϊ
- ok
w 用于输出erlang term
- 164> io:format("~w~n",[a]).
- a
- ok
- 165> io:format("~w~n",[[a]]).
- [a]
- ok
- 166> io:format("~w~n",[[97]]).
- [97]
- ok
p 和w相识的输出规则,不同的是w输出是没有格式的,字符串会显示位ascII编码
p的输出是有格式的 ,默认一行的显示的最大长度为80,可以自己定义显示的最大值。并且尽可能字符串输出
- 5> T = [{attributes,[[{id,age,1.50000},{mode,explicit},
- {typename,"INTEGER"}], [{id,cho},{mode,explicit},{typename,'Cho'}]]},
- {typename,'Person'},{tag,{'PRIVATE',3}},{mode,implicit}].
- ...
- 6> io:format("~w~n", [T]).
- [{attributes,[[{id,age,1.5},{mode,explicit},{typename,
- [73,78,84,69,71,69,82]}],[{id,cho},{mode,explicit},{typena
- me,'Cho'}]]},{typename,'Person'},{tag,{'PRIVATE',3}},{mode
- ,implicit}]
- ok
- 7> io:format("~62p~n", [T]).
- [{attributes,[[{id,age,1.5},
- {mode,explicit},
- {typename,"INTEGER"}],
- [{id,cho},{mode,explicit},{typename,'Cho'}]]},
- {typename,'Person'},
- {tag,{'PRIVATE',3}},
- {mode,implicit}]
- ok
W,P和w,p的区别在于可以控制terms输出的深度(深度的定义?)
- 239> io:format("~W~n",[T,9]).
- [{attributes,[[{id,age,1.5},{mode,explicit},{typename,...}],[{id,cho},{mode,...},{...}]]},{typename,'Person'},{tag,{'PRIVATE',3}},{mode,implicit}]
- ok
- 240> io:format("~W~n",[T,8]).
- [{attributes,[[{id,age,...},{mode,...},{...}],[{id,...},{...}|...]]},{typename,'Person'},{tag,{'PRIVATE',3}},{mode,implicit}]
- ok
- 241> io:format("~W~n",[T,7]).
- [{attributes,[[{id,...},{...}|...],[{...}|...]]},{typename,'Person'},{tag,{'PRIVATE',...}},{mode,implicit}]
- ok
B 同b 值为2-36 默认是10 控制按多少进制显示
- 248> io:format("|~3.16b|~n",[31]).
- | 1f|
- ok
- 11> io:format("~.16B~n", [31]).
- 1F
- ok
- 12> io:format("~.2B~n", [-19]).
- -10011
- ok
- 285> io:format("~15.16.2B~n", [-19]).
- 222222222222-13
- ok
X x 和B类似,比B多一个参数,显示在结果的前面
- 14> io:format("~X~n", [31,"1000#"]).
- 1000#31
- ok
- 15> io:format("~.16X~n", [-31,"0x"]).
- -0x1F
- ok
#和B类似,在结果的前面显示进制数
- 16> io:format("~.10#~n", [31]).
- 10#31
- ok
- 17> io:format("~.16#~n", [-31]).
- -16#1F
- ok
- ok
b
同B,但打印小写字母。
x
同X,但打印小写字母。
+
同#,但打印小写字母。
i
忽略了下一届。