2012-03-14 29 views
4

文字列を連結するときに二重引用符をエスケープする方法は?例えば iが与えるCommon Lispで二重引用符をエスケープする

(concatenate 'string "Mama said: " "\"Son, your life is an open book...\"") 

を期待:

"Mama said: "Son, your life is an open book..."" 

の代わりとしてのバックスラッシュでそれを返さ:

"Mama said: \"Son, your life is an open book...\"" 

答えて

11

返される値は、表現を使用して、すなわち、読み出し可能に印刷されますこれはREADと解析してCLオブジェクトにすることができます。あなたはそのままで文字列を出力PRINCなどの機能を使用する場合は、引用符は、あなたが(外側の引用符は、文字列の一部ではない)望んでいたことがわかります。

CL-USER> (princ (concatenate 'string "Mama said: " "\"Son, your life is an open book...\"")) 
Mama said: "Son, your life is an open book..." 
"Mama said: \"Son, your life is an open book...\"" 

最初の行が結果ですPRINCは、READ-EVAL-PRINT-LOOPのPRINT部分の2番目の部分です。

関連する問題