• erlang格式化输出


    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  都会报错

    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
    忽略了下一项。

    本文转自:http://liangjianss.iteye.com/blog/716144

  • 相关阅读:
    左侧导航太长了?
    组织结构配置文件的诡异行为
    SharePoint上无法显示Lync的在线状态
    多语言和自定义CSS
    文档库下载副本,文件名被截断
    在线menu生成网站
    FC7崩溃,安装Ubuntu,相当不错的系统
    简易下载baidu音乐排行榜音乐
    java放射调用静态方法和构造函数
    升级到Ubuntu7.10导致Eclipse中键盘无效的问题
  • 原文地址:https://www.cnblogs.com/labi/p/3580378.html
Copyright © 2020-2023  润新知