在erlang中将整个列表设为字符串

时间:2018-01-10 05:24:37

标签: string list erlang

我试图做以下事情

S = lists:concat(A) ++ " " ++ [254,874] ++ "\n".

它给了我错误信息

** exception error: no match of right hand side value [51,50,52,51,53,54,53,54,55,54,54,53,52,51,32,254,874,10]

但它适用于字符串值" [254,874]"

如何制作[254,874]至#34; [254,874]"

4 个答案:

答案 0 :(得分:2)

您可能忘记f(S)以前的计算。在使用命令之前尝试一下:

1> f(S).
ok
2> S = lists:concat(A) ++ " " ++ [254,874] ++ "\n".

此外,您可以使用$[$]在ASCII中指明"[" "]"

3> $[.
91
4> $].
93
5> S = lists:concat(A) ++ " " ++ [91,254,874,93] ++ "\n".

答案 1 :(得分:-1)

找到了答案

A = [254,876].
lists:flatten(io_lib:format("~p",[A])).

这给出了确切的结果     “[254876]”

答案 2 :(得分:-1)

将整数列表转换为字符串

对于你的情况我会做的:

[A, B] = [254,876],
C = "[" ++ integer_to_list(A) ++ "," ++ integer_to_list(B) ++ "]".

更通用的案例:

-module(l2s).
-compile(export_all).

list_to_string([H|List]) ->
    list_to_string(List, "[" ++ integer_to_list(H)).

list_to_string([], String) -> String ++ "]";

list_to_string([H | List], String) ->
    list_to_string(List, String ++ "," ++ integer_to_list(H)).

测试:

Eshell V7.3  (abort with ^G)
1> A = [1,2,3,4,5].
[1,2,3,4,5]
2> l2s:list_to_string(A).
"[1,2,3,4,5]"

答案 3 :(得分:-1)

"["++lists:concat(lists:join(",",A))++"]".
"[1,2,3,4]"