【问题标题】:make entire list to string in erlang在erlang中将整个列表变为字符串
【发布时间】:2018-06-19 05:34:22
【问题描述】:

我正在尝试执行以下操作

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] 变为“[254,874]”

【问题讨论】:

    标签: string list erlang


    【解决方案1】:

    您可能忘记了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".
    

    【讨论】:

      【解决方案2】:

      找到答案

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

      这给出了准确的结果 “[254,876]”

      【讨论】:

        【解决方案3】:

        将整数列表转换为字符串

        对于你的情况,我会这样做:

        [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]"
        

        【讨论】:

          【解决方案4】:
          "["++lists:concat(lists:join(",",A))++"]".
          
          "[1,2,3,4]"
          

          【讨论】:

          • 欢迎来到 Stack Overflow。 Stack Overflow 上不鼓励仅使用代码的答案,因为它们没有解释它是如何解决问题的。请编辑您的答案以解释此代码的作用以及它如何回答问题,以便它对 OP 以及其他有类似问题的用户有用。
          猜你喜欢
          • 2017-12-03
          • 2018-08-23
          • 2015-04-20
          • 1970-01-01
          • 2010-10-09
          • 2017-09-20
          • 1970-01-01
          • 2015-03-17
          • 2011-02-24
          相关资源
          最近更新 更多