【问题标题】:Erlang conversion for one format to another formatErlang 将一种格式转换为另一种格式
【发布时间】:2014-02-04 20:23:36
【问题描述】:

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

我尝试了很多尝试和错误的方法来转换这种格式,但我无法得到解决方案。

【问题讨论】:

  • list_to_tuple(string:tokens("{hari, localost}", "{, }")). 呢?
  • 感谢它运行良好
  • 嗯,是的,但它很容易出错。我建议改为检查erl_scan:string(在工作中没有办法这样做)。

标签: erlang


【解决方案1】:

我猜你需要从字符串转换,所以你可以使用模块 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 仅在术语是有效表达式时才有效,这就是为什么我必须添加一个“。”在输入的末尾。

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

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>

【讨论】:

    猜你喜欢
    • 2018-01-20
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多