Common lisp Format指令或一行代码截断长字符串?
我的用例是将列表列表打印为一个表,列长度相等,因此我希望截断长输入。有这样做的指令吗?可能是带有Common lisp Format指令或一行代码截断长字符串?,common-lisp,Common Lisp,我的用例是将列表列表打印为一个表,列长度相等,因此我希望截断长输入。有这样做的指令吗?可能是带有~[条件的一行程序 ~a的参数允许用空格填充: (format t "~10a***" "aaa") aaa *** ;; aaa *** 长输入完全打印: (format t "~10a***" "aaaaaaaaaaaaaaaaa") ;; aaaaaaaaaaaaaaaaa*** 因此,我这样做,借助于“开始”和“结束”可以大于列表而不会抛出错误(与s
~[
条件的一行程序
~a
的参数允许用空格填充:
(format t "~10a***" "aaa")
aaa ***
;; aaa ***
长输入完全打印:
(format t "~10a***" "aaaaaaaaaaaaaaaaa")
;; aaaaaaaaaaaaaaaaa***
因此,我这样做,借助于“开始”和“结束”可以大于列表而不会抛出错误(与subseq相反):
我不希望format能够在被截断的字符串中添加省略号(…
),但这很好
我没有在快速参考或搜索中找到我要找的内容
谢谢!我不知道,但您当然可以自己编写并与一起使用。现在还有
str:prune-length-string
,它接受一个:省略号参数来告诉您如何剪切字符串:
(mapcar (lambda (tuple)
(format t "~10a | ~10a~&"
(str:prune 10 (first tuple) :ellipsis "…")
(str:prune 10 (second tuple) :ellipsis "…")))
mylist)
header a | header b
col a | col b
much long… | much long…
我们可以使用v
指令来避免重复太多的列长度:
(defparameter *col-length* 10)
(mapcar (lambda (tuple)
(format t "~va | ~va~&"
*COL-LENGTH*
(str:prune *COL-LENGTH* (first tuple) :ellipsis "…")
*COL-LENGTH*
(str:prune *COL-LENGTH* (second tuple) :ellipsis "…")))
mylist)
header a | header b
col a | col b
much long… | much long…
我们可以使用(let((str:*省略号*“…))
(defparameter *col-length* 10)
(mapcar (lambda (tuple)
(format t "~va | ~va~&"
*COL-LENGTH*
(str:prune *COL-LENGTH* (first tuple) :ellipsis "…")
*COL-LENGTH*
(str:prune *COL-LENGTH* (second tuple) :ellipsis "…")))
mylist)
header a | header b
col a | col b
much long… | much long…