在用字符串附加双引号时,我遇到了 erlang 附加 /" not " 的问题?
Id = "1223",
Flag = "1",
lists:flatten(io_lib:format("{xmlelement, \"deliverystatus\", [{\"messageid\", \"~s\"}, {\"status\", \"~s\"}], []}", [Id, Flag])).
在用字符串附加双引号时,我遇到了 erlang 附加 /" not " 的问题?
Id = "1223",
Flag = "1",
lists:flatten(io_lib:format("{xmlelement, \"deliverystatus\", [{\"messageid\", \"~s\"}, {\"status\", \"~s\"}], []}", [Id, Flag])).
您的问题不是很清楚,但我尝试了您作为示例提供的代码,我猜您很生气,因为结果字符串显示为\"序列而不是单个字符"。
1> Id = "1223".
"1223"
2> Flag = "1".
"1"
3> lists:flatten(io_lib:format("{xmlelement, \"deliverystatus\", [{\"messageid\", \"~s\"}, {\"status\", \"~s\"}], []}", [Id, Flag])).
"{xmlelement, \"deliverystatus\", [{\"messageid\", \"1223\"}, {\"status\", \"1\"}], []}"
事实上,您必须记住,您在控制台中获得的是上次评估结果的图像。在您的情况下,它是一个列表,仅包含可打印字符,因此 shell 选择将其显示为字符串。但它尽量不隐藏任何信息,所以你有周围的 " 字符告诉你它是一个字符串,并且在任何特殊字符之前的 \ 告诉你,在这种情况下,以下 " 是字符串的一部分而不是此字符串的分隔符。但内部只存储字符“。您可以通过检查字符串的长度来验证它:
5> length(lists:flatten(io_lib:format("{xmlelement, \"deliverystatus\", [{\"messageid\", \"~s\"}, {\"status\", \"~s\"}], []}", [Id, Flag]))).
76
6>
或者为了更简单的测试:o)
6> length("test\"").
5
7> lists:flatten("test\"").
"test\""
8>
如果要显示没有这些 \ 的字符串,请使用 io:format 函数在控制台中显示字符串:
4> io:format(lists:flatten(io_lib:format("{xmlelement, \"deliverystatus\", [{\"messageid\", \"~s\"}, {\"status\", \"~s\"}], []}", [Id, Flag]))).
{xmlelement, "deliverystatus", [{"messageid", "1223"}, {"status", "1"}], []}ok
最后为了获得更好的结果,为了将字符串与 io:format 的返回值 ok 分开,并显示在控制台中,让我们添加一个回车:
8> io:format(lists:flatten(io_lib:format("{xmlelement, \"deliverystatus\", [{\"messageid\", \"~s\"}, {\"status\", \"~s\"}], []}", [Id, Flag])) ++ "~n").
{xmlelement, "deliverystatus", [{"messageid", "1223"}, {"status", "1"}], []}
ok
9>
编辑: io:format 的返回值总是可以的,它只是在控制台上打印并返回 ok。我说的是,使用 io:format 或 length 您可以验证由
lists:flatten(io_lib:format("{xmlelement, \"deliverystatus\", [{\"messageid\", \"~s\"}, {\"status\", \"~s\"}], []}", [Id, Flag])),
不包含任何“\”。如果您想记录此值以供以后使用或操作它,只需将其分配给一个变量:
My_string = lists:flatten(io_lib:format("{xmlelement, \"deliverystatus\", [{\"messageid\", \"~s\"}, {\"status\", \"~s\"}], []}", [Id, Flag])),