文字列に二重引用符を追加すると、erlang が " ではなく /" を追加するという問題があります。
Id = "1223",
Flag = "1",
lists:flatten(io_lib:format("{xmlelement, \"deliverystatus\", [{\"messageid\", \"~s\"}, {\"status\", \"~s\"}], []}", [Id, Flag])).
文字列に二重引用符を追加すると、erlang が " ではなく /" を追加するという問題があります。
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\"}], []}"
実際、コンソールに表示されるのは、最後の評価の結果のイメージであることを覚えておく必要があります。あなたの場合、それは印刷可能な文字のみを含むリストであるため、シェルはそれを文字列として表示することを選択しました。しかし、それは情報を隠そうとしないので、周囲の " 文字は文字列であることを伝え、\ は特殊文字の前にあり、この場合、次の " は文字列の一部であり、文字列ではありませんこの文字列の区切り文字。ただし、内部的には文字 " のみが保存されます。文字列の長さを確認することで確認できます。
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 です。単にコンソールに出力して 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])),