2017-12-10 19 views
-1

私はepgsqlを使ってErlangのデータベースに問い合わせています。 "what_was_in_the_row"を囲む引用符を含む文字列の結果を返します。結果を操作する前に、これらの引用符を削除するにはどうすればよいですか?Erlangで周囲の引用符を削除する

+2

二重引用符を使用してもよろしいですか?どのようにチェックしていますか? 'io:format("〜p "、...)'は文字列の周りに余分な二重引用符を出力します。 – Dogbert

+0

@Dogbert io_lib:format( "〜p〜p"、[Value1、Value2])の文字列に別の値を入れて、ソケット経由でPythonプログラムに送ります。 Pythonプログラムは、引用符を持つものと見なします。私は現在、Python側で引用符を取り除いています。 –

答えて

5

制御フォーマット~p(きれいな印刷)は、印刷される変数のタイプに関する情報を保持します。文字列を出力しています。つまり、erlangには、印刷可能な文字で構成された標準整数リスト([101,102,103]など)がシェルに"efg"と表示されます。

io_lib:format("~p",[[101,102,103]]).に電話すると、結果が["\"efg\""]となり、説明が必要です。

  • 周囲のブラケットがio_lib:format/2の戻り値の型であるリストを示し、
  • その後、最初の二重引用符は、多分、それはシンタックスシュガー文字列ですが、それはの一部ではない別のリストを示し、結果(文字列のように見える任意のリストはかなり印刷した文字列として表示されますので、私は多分言う)、
  • ついに\"あなたは評価できる単一の文字「

を表しエスケープシーケンスでありますレン各文字列の1/thを比較して差を確認します。

  • 3 = length( "efg")。
  • 5 = length( "\" efg \ "")。

あなたは周囲の引用符なしの文字列を取得したい場合は、あなたがコントロール形式にもちろん~s

1> [Res] = io_lib:format("~s",[[101,102,103]]). 
["efg"] 
2> length(Res). 
3 
3> [Res] = io_lib:format("~s",[Res]).   
["efg"] 

を使用する必要があり、最後の行は、私の例は愚かであることを示しています。 io_lib:format("~s ~s!",["Hello","world"]).またはそれ以上の複雑な書式設定の場合、結果はchars()です。リストはchar()またはchars()です。

関連する問題