在Common Lisp中逃避双引号

时间:2012-03-14 16:56:05

标签: string escaping common-lisp string-concatenation

如何在连接字符串时转义双引号? 例如我希望

(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...\""

1 个答案:

答案 0 :(得分:14)

可以读取返回的值,即使用可以用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部分的第二行。