Erlang如何从列表中获取String

时间:2011-01-14 14:21:31

标签: string list types erlang

如何在erlang中转换String中的List?

我的列表视图:

  

[{{19,59,51},{2011,1,14}, “FFF”},{{19,59,47},{2011,1,14}, “ASDfff”}]

谢谢。

2 个答案:

答案 0 :(得分:4)

一件非常简单的事情就是

List = [{{19,59,51},{2011,1,14},"fff"},
        {{19,59,47},{2011,1,14},"ASDfff"}],
IOList = io_lib:format("~w", [List]),
FlatList = lists:flatten(IOList),

但是因为这些似乎是时间戳,您可能希望以更好的方式格式化,例如

FormattedIOLists =
   [ io_lib:format("~4..0B-~2..0B-~2..0B ~2..0B:~2..0B:~2..0B ~s",
                   [YYYY,M,D, HH,MM,SS, Comment])
     || {{HH,MM,SS},{YYYY,M,D},Comment} <- List ],
FormattedFlatLists =
   [ lists:flatten(io_lib:format("~4..0B-~2..0B-~2..0B ~2..0B:~2..0B:~2..0B ~s",
                                 [YYYY,M,D, HH,MM,SS, Comment]))
     || {{HH,MM,SS},{YYYY,M,D},Comment} <- List ],

可以更好地适应您的账单。

对于shell上的快速和脏交互式输出,

9> [ io:format("~4..0B-~2..0B-~2..0B ~2..0B:~2..0B:~2..0B ~s~n", [YYYY,M,D, HH,MM,SS, Comment]) || {{HH,MM,SS},{YYYY,M,D},Comment} <- List ].                 
2011-01-14 19:59:51 fff
2011-01-14 19:59:47 ASDfff
[ok,ok]
10> lists:foreach(fun({{HH,MM,SS},{YYYY,M,D},Comment}) -> io:format("~4..0B-~2..0B-~2..0B ~2..0B:~2..0B:~2..0B ~s~n", [YYYY,M,D, HH,MM,SS, Comment]) end, List).
2011-01-14 19:59:51 fff
2011-01-14 19:59:47 ASDfff
11> 

请注意,在大多数情况下,构建列表(iolists)的递归列表要比展平那些iolists要好得多。大多数输出​​函数直接接受iolists输出数据,因此在实际输出发生之前,通过展平列表不会获得任何结果。

答案 1 :(得分:1)

也许只是:

 io_lib:format("~w", [[{{19,59,51},{2011,1,14},"fff"},{{19,59,47},{2011,1,14},"ASDfff"}]]).