我开始给我写一些Common Lisp,我只是把事情放在一起并格式化它们。 让我们假设我有一个alist,就像这样: 我该如何格式化呢? 我想的是(format t "~{~{~a: ~a~}~%~}" *map*) ,但这会产生错误,因为“零”不是列表而你不能拿它的车。 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我目前正在尝试在GNU Common lisp 2.49中获得... \\hline
的输出,但我无法使格式工作。 这是我到目前为止尝试获得一个反斜杠:
(format nil "\ ") => " "
(format nil "\\ ") => "\\ "
(format nil "\\\ ") => "\\ "
我认为双反斜杠会使它工作,为什么反斜杠不会逃避另一个反斜杠?
参见例如:
CL-USER> (write "\\" :escape nil)
\
"\\"
在上面,第一个反斜杠是你的字符串,打印时没有转义反斜杠。 返回的值是由REPL使用标准io语法( http://clhs.lisp.se/Body/m_w_std_.htm )打印的字符串,它会转义字符串。
因此,您的字符串包含一个反斜杠,但是以可以回读的方式打印,因此需要转义输出字符串中的反斜杠。
另请注意,使用NIL和单个字符串调用format
返回相同的字符串。
您可以检查字符串,例如通过将每个字符映射到其名称:
(loop
for input in '("\ "
"\\ "
"\\\ ")
collect (list :input input
:characters (map 'list #'char-name input)))
这给出了:
((:INPUT " " :CHARACTERS ("Space"))
(:INPUT "\\ " :CHARACTERS ("REVERSE_SOLIDUS" "Space"))
(:INPUT "\\ " :CHARACTERS ("REVERSE_SOLIDUS" "Space")))
或者,只需使用inspect
:
CL-USER> (inspect "\\hline")
The object is a VECTOR of length 6.
0. #\\
1. #\h
2. #\l
3. #\i
4. #\n
5. #\e
注意创建字符串和实际输出到流之间的区别:
CL-USER 69 > (format nil "\\ ")
"\\ " ; result
CL-USER 70 > (format t "\\ ")
\ ; output
NIL ; result
CL-USER 71 > (format *standard-output* "\\ ")
\ ; output
NIL ; result
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.