仅使用list_to_atom()
即可:
list_to_atom("hello").
hello
list_to_atom("Hello").
'Hello'
为什么差异?
我正在尝试使用数字,字符串和原子格式化字符串,如下所示:
lists:flatten(io_lib:format("PUTVALUE ~p ~p", [list_to_atom("hello"), 40])).
"PUTVALUE hello 40"
lists:flatten(io_lib:format("PUTVALUE ~p ~p", [list_to_atom("Hello"), 40])).
"PUTVALUE 'Hello' 40"
在Erlang中执行此操作的最佳方式是什么?
编辑:为了明确问题,有比上面的示例更多的值,在某些情况下,值可以是字符串或原子,如
lists:flatten(io_lib:format("PUTVALUE ~p ~p ~p", [list_to_atom("hello"), X, 40])).
其中第一个参数始终是字符串,但X
可以是原子或字符串。第三个参数始终是一个数字。
答案 0 :(得分:12)
如果您想获得字符串和整数的平面列表,使用~s
和~B
可能会很简单:
lists:flatten(io_lib:format("PUTVALUE ~s ~B", ["Hello", 40])).
答案 1 :(得分:9)
在Erlang中,一个原子以小写字母开头。对于以大写字母开头的原子,必须用单引号括起来。
http://www.erlang.org/doc/reference_manual/data_types.html#id66663
答案 2 :(得分:5)
您可以使用list:concat来格式化这样的字符串
lists:concat(["PUTVALUE ",hello," ",40]).