-1

文字列に二重引用符を追加すると、erlang が " ではなく /" を追加するという問題があります。

Id = "1223",
    Flag = "1", 

lists:flatten(io_lib:format("{xmlelement, \"deliverystatus\", [{\"messageid\", \"~s\"}, {\"status\", \"~s\"}], []}", [Id, Flag])).
4

1 に答える 1

2

あなたの質問はあまり明確ではありませんが、私はあなたが例として挙げたコードを試しました.

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])),
于 2013-03-21T12:21:41.537 に答える