【发布时间】:2016-03-22 17:58:00
【问题描述】:
这是我写的代码sn-p,但不起作用:
(let ((separator "|")
(text '("Just" "do" "it" "!")))
(format t "~{~A~A~%~}" text separator))
输出应如下所示:
Just|
do|
it|
!|
但是,它不会那样工作 - 当我在 ~{~} 中时,我不知道如何从列表之外添加元素。我可以这样做:
(format t "~{~A|~%~}" text)
但这不允许我从变量中使用separator,这就是我所追求的。
现在我知道我可以通过在每个偶数位置添加分隔符来将text 与分隔符合并,但这对我来说看起来很难看。 format还有其他方法吗?
【问题讨论】:
-
这几乎可以通过stackoverflow.com/q/8830888/1281433 的接受答案来回答,除了您不希望将分隔符编码到字符串中。 non-accepted answer 更通用,可以在这里使用(调整为让分隔符成为字符串,而不仅仅是字符)。
-
这绝对是没有回答!我想在其他地方定义分隔符,整个问题就是关于这个 - 您展示的问题中的答案显示了如何使分隔符分隔元素而不是在每个元素之后打印。
-
我说它几乎得到了回答。如果您不需要在外部定义分隔符,则只需:(format t "~{~A|~%~}" items)。
-
@JoshuaTaylor 我不需要它来分开,而是在每个元素的末尾,除此之外我已经知道如何做你展示的 - 我错过的确切的东西是不在那里,所以答案对我来说没有多大用处,但感谢链接 - 有人可能会偶然发现它并发现它很有用。
-
还是分隔符;你只是不要在最后一个元素之后省略它。在您的代码中,您甚至将其称为
separator。
标签: format common-lisp