字符串的读取语法是一对双引号,中间包含任意数量的字符,例如 "like this"。要在字符串中包含双引号,需在其前面加反斜杠;因此,"\"" 是一个只包含单个双引号的字符串。同理,要在字符串中包含反斜杠本身,需在前面再加一个反斜杠,例如:"this \\ is a single embedded backslash"。
由于字符串是字符数组,你可以使用字符的读取语法来指定字符串中的字符,但去掉开头的问号。这在字符串常量中包含那些不能表示自身的字符时非常有用。
因此,控制字符可以用以反斜杠开头的转义序列来表示;例如,"foo\r" 表示 ‘foo’ 后面跟一个回车符。其他控制字符的转义序列,See 基本字符语法。同样,你也可以使用控制字符的专用读取语法(see 控制字符语法),例如 "foo\^Ibar",它会在字符串中嵌入一个制表符。你还可以使用 通用转义语法 中描述的非-ASCII 字符转义序列,例如 "\N{LATIN SMALL LETTER A WITH GRAVE}" 和 "\u00e0"(但请注意 字符串中的非-ASCII 字符 一节中关于非-ASCII 字符的注意事项)。
换行符在字符串的读取语法中并不特殊:如果你在双引号之间直接换行,它会成为字符串中的一个字符。但转义换行符—— 即前面带 ‘\’ 的换行 ——不会成为字符串的一部分;也就是说,Lisp 读取器在读取字符串时会忽略转义换行。转义空格 ‘\ ’ 同样会被忽略。
"It is useful to include newlines
in documentation strings,
but the newline is \
ignored if escaped."
⇒ "It is useful to include newlines
in documentation strings,
but the newline is ignored if escaped."