【发布时间】:2011-06-09 04:27:29
【问题描述】:
如何在erlang中将List转换成String?
我的列表视图:
[{{19,59,51},{2011,1,14},"fff"},{{19,59,47},{2011,1,14},"ASDfff"}]
谢谢。
【问题讨论】:
-
你能提供一个这样的列表的例子吗?
-
字符串应该是什么样的?
如何在erlang中将List转换成String?
我的列表视图:
[{{19,59,51},{2011,1,14},"fff"},{{19,59,47},{2011,1,14},"ASDfff"}]
谢谢。
【问题讨论】:
一个非常简单的事情是
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 作为输出数据,因此在实际输出发生之前将列表展平将一无所获。
【讨论】:
也许只是:
io_lib:format("~w", [[{{19,59,51},{2011,1,14},"fff"},{{19,59,47},{2011,1,14},"ASDfff"}]]).
【讨论】: