首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在普通lisp中设置单个反斜杠的格式?

如何在普通lisp中设置单个反斜杠的格式?
EN

Stack Overflow用户
提问于 2018-10-12 15:38:28
回答 2查看 1.4K关注 0票数 6

目前,我正试图在GNU 2.49中获得... \hline的输出,但无法使格式正常工作。到目前为止,我一直试图得到一个反斜杠:

代码语言:javascript
复制
(format nil "\ ") => " "
(format nil "\\ ") => "\\ "
(format nil "\\\ ") => "\\ "

我认为双反斜杠会使它工作,为什么反斜杠不是在逃避其他反斜杠吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-12 18:55:46

注意创建字符串与实际输出流之间的区别:

代码语言:javascript
复制
CL-USER 69 > (format nil "\\ ")
"\\ "                               ; result

CL-USER 70 > (format t "\\ ")
\                                   ; output
NIL                                 ; result

CL-USER 71 > (format *standard-output* "\\ ")
\                                   ; output
NIL                                 ; result
票数 6
EN

Stack Overflow用户

发布于 2018-10-12 15:49:56

例如,见:

代码语言:javascript
复制
CL-USER> (write "\\" :escape nil)
\
"\\"

在上面,第一个反斜杠是您的字符串,打印没有转义反斜杠。返回的值是由REPL用标准io语法(.htm)打印的字符串,它转义字符串。

因此,您的字符串包含一个反斜杠,但其打印方式使其可以被读取,因此需要在输出字符串中转义反斜杠。

还请注意,使用零调用format和单个字符串将返回相同的字符串。

您可以检查字符串,例如,通过将每个字符映射到其名称:

代码语言:javascript
复制
(loop
   for input in '("\ " 
                  "\\ "
                  "\\\ ")
   collect (list :input input
                 :characters (map 'list #'char-name input)))

这意味着:

代码语言:javascript
复制
((:INPUT " " :CHARACTERS ("Space"))
 (:INPUT "\\ " :CHARACTERS ("REVERSE_SOLIDUS" "Space"))
 (:INPUT "\\ " :CHARACTERS ("REVERSE_SOLIDUS" "Space")))

或者,只需使用inspect

代码语言:javascript
复制
CL-USER> (inspect "\\hline")

The object is a VECTOR of length 6.
0. #\\
1. #\h
2. #\l
3. #\i
4. #\n
5. #\e
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52782838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档