我有一个字符ch
,想要将其追加到字符串str
中。我知道你可以通过以下方式连接字符串:
(setf str (concatenate 'string str (list ch)))
但这似乎相当低效。有没有更快的方法只添加一个字符?
我有一个字符ch
,想要将其追加到字符串str
中。我知道你可以通过以下方式连接字符串:
(setf str (concatenate 'string str (list ch)))
CL-USER 32 > (defun make-adjustable-string (s)
(make-array (length s)
:fill-pointer (length s)
:adjustable t
:initial-contents s
:element-type (array-element-type s)))
MAKE-ADJUSTABLE-STRING
VECTOR-PUSH-EXTEND
然后可以将字符添加到字符串的末尾。在这里,我们将字符 #\!
添加到字符串 "Lisp"
的末尾。结果字符串为 "Lisp!"
。CL-USER 33 > (let ((s (make-adjustable-string "Lisp")))
(vector-push-extend #\! s)
s)
"Lisp!"
如果您想多次扩展一个字符串,通常使用 with-output-to-string 并写入其提供的流是非常高效的。请务必使用 write 或 princ 等操作(而不是 format)以提高性能。