如何在Erlang中将此字符串格式"{hari, localost}"
转换为此{"hari", "localost"}
?
我尝试使用大量的试错方法转换此格式,但我无法获得解决方案。
答案 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>