Erlang将一种格式转换为另一种格式

时间:2014-02-04 11:47:26

标签: erlang

如何在Erlang中将此字符串格式"{hari, localost}"转换为此{"hari", "localost"}

我尝试使用大量的试错方法转换此格式,但我无法获得解决方案。

1 个答案:

答案 0 :(得分:0)

我猜你需要从字符串转换,所以你可以使用模块erl_scan和erl_parse:

1> erl_scan:string("{hari, localost}"++".").
{ok,[{'{',1},
     {atom,1,hari},
     {',',1},
     {atom,1,localost},
     {'}',1},
     {dot,1}],
    1}
2> {ok,Term} = erl_parse:parse_term(Tokens).             
{ok,{hari,localost}}
3>Conv = fun({X, Y}) -> {atom_to_list(X), atom_to_list(Y)} end.
#Fun<erl_eval.6.80484245>
4> Conv(Term).
{"hari","localost"}
5>

注1 函数erl_parse:parse_term / 1仅在Terms是有效表达式时才有效,这就是我必须添加“。”的原因。在输入结束时。

注意2 如果引用输入表达式中的术语,yo可以直接转换为最终表达式:

1> {ok,Tokens,_} = erl_scan:string("{\"hari\", \"localost\"}.").     
{ok,[{'{',1},
     {string,1,"hari"},
     {',',1},
     {string,1,"localost"},
     {'}',1},
     {dot,1}],
    1}
2> {ok,Term} = erl_parse:parse_term(Tokens).                        
{ok,{"hari","localost"}}
3>