【问题标题】:Erlang How to get String from listErlang如何从列表中获取字符串
【发布时间】:2011-06-09 04:27:29
【问题描述】:

如何在erlang中将List转换成String?

我的列表视图:

[{{19,59,51},{2011,1,14},"fff"},{{19,59,47},{2011,1,14},"ASDfff"}]

谢谢。

【问题讨论】:

  • 你能提供一个这样的列表的例子吗?
  • 字符串应该是什么样的?

标签: string list types erlang


【解决方案1】:

一个非常简单的事情是

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 作为输出数据,因此在实际输出发生之前将列表展平将一无所获。

【讨论】:

    【解决方案2】:

    也许只是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-09
      • 2012-05-03
      • 2019-02-21
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多