gpt4 book ai didi

format - Common Lisp 相当于 format 函数中的\r?

转载 作者:行者123 更新时间:2023-12-03 01:56:59 25 4
gpt4 key购买 nike

基本上,我想执行以下操作,仅使用 Common Lisp 而不是 Python:

print("Hello world.\r\n")

我可以做到这一点,但它只输出 #\newline 字符并跳过 #\return:

(format t "Hello world.~%")

我相信我可以使用外部参数来完成此任务,如下所示:

(format t "Hello world.~C~%" #\return)

但这对我来说似乎很尴尬。当然,我可以以某种方式将 #\return 嵌入到格式字符串中,就像我可以 #\newline 一样?

最佳答案

回车和换行字符

\r 是 Common Lisp 中的字符 #\return

\n 是 Common Lisp 中的字符 #\linefeed

以下内容以回车符和换行符结束字符串“Hello world.”

(format t "Hello world.~C~C" #\return #\linefeed)

#\newline 是平台用作行划分的任何内容。在 Unix 机器上,这通常与 #\linefeed 相同。在其他平台(Windows、Lisp Machines...)上,这可能有所不同。

格式控制

FORMAT 控件~% 打印换行符 (!)。

所以

(format t "Hello world.~%")

将打印操作系统使用的换行符。 CR 或 CRLF 或 LF。根据平台的不同,这将是一两个字符。

那么,在 Windows 计算机上,您的

(format t "Hello world.~C~%" #\return)

实际上可能会打印:#\return #\return #\linefeed。这是三个字符而不是两个。 Windows 使用 CRLF 来换行。 Unix 使用 LF。旧的 Mac OS(Mac OS X 之前)和 Lisp 机器使用 CR 来换行。

编写 CRLF

如果您确实想打印 CRLF,则必须明确执行。例如:

(defun crlf (&optional (stream *standard-output*))
(write-char #\return stream)
(write-char #\linefeed stream)
(values))

FORMAT 没有用于输出换行符或回车符的特殊语法。

格式控制中的换行

Common Lisp 允许多行字符串。因此我们可以将它们用作格式控件:

在这里您可以看到控制字符串中的换行符也在输出中:

CL-USER 77 > (format t "~%first line
second line~%~%")

first line
second line

NIL

下面是一个示例,其中 ~@ FORMAT 控件保留换行符,但删除下一行上的空格:

CL-USER 78 > (format t "~%first line~@
second line~%~%")

first line
second line

NIL

关于format - Common Lisp 相当于 format 函数中的\r?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2619172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com