首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Lisp代码中长多字符串常量(或vars)的惯用方法

Lisp代码中长多字符串常量(或vars)的惯用方法
EN

Stack Overflow用户
提问于 2014-10-09 11:24:45
回答 3查看 206关注 0票数 3

在通用Lisp代码中插入长的多字符串变量或常量的惯用方式是什么?在unix或其他语言中是否存在类似HEREDOC的东西来消除字符串文本中的缩进空格?

例如:

代码语言:javascript
代码运行次数:0
运行
复制
(defconstant +help-message+ 
             "Blah blah blah blah blah
              blah blah blah blah blah
              some more more text here")
; ^^^^^^^^^^^ this spaces will appear - not good

这样写起来有点丑:

代码语言:javascript
代码运行次数:0
运行
复制
(defconstant +help-message+ 
             "Blah blah blah blah blah
blah blah blah blah blah
some more more text here")

我们该怎么写。如果有任何方法,当你不需要转义引号,它会更好。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-09 13:22:29

我不懂习语,但format可以帮你做到这一点。(自然。format可以做任何事情。)

见Hyperspec第22.3.9.3节,Tilde换线。未修饰时,它移除换行符和随后的空格。如果要保留换行符,请使用@修饰符:

代码语言:javascript
代码运行次数:0
运行
复制
(defconstant +help-message+
   (format nil "Blah blah blah blah blah~@
                blah blah blah blah blah~@
                some more more text here"))

CL-USER> +help-message+
"Blah blah blah blah blah
blah blah blah blah blah
some more more text here"
票数 4
EN

Stack Overflow用户

发布于 2014-10-09 12:06:25

没有这回事。

压痕通常是:

代码语言:javascript
代码运行次数:0
运行
复制
(defconstant +help-message+ 
  "Blah blah blah blah blah
blah blah blah blah blah
some more more text here")

也许使用读取器宏,或者使用读写器。素描:

代码语言:javascript
代码运行次数:0
运行
复制
(defun remove-3-chars (string)
  (with-output-to-string (o)
    (with-input-from-string (s string)
      (write-line (read-line s nil nil) o)
      (loop for line = (read-line s nil nil)
            while line
            do (write-line (subseq line 3) o)))))

(defconstant +help-message+
  #.(remove-3-chars
  "Blah blah blah blah blah
   blah blah blah blah blah
   some more more text here"))

CL-USER 18 > +help-message+
"Blah blah blah blah blah
blah blah blah blah blah
some more more text here
"

需要更多的抛光..。你可以使用‘串-修剪’或类似的。

票数 2
EN

Stack Overflow用户

发布于 2014-10-10 02:45:25

我有时会用这个表格:

代码语言:javascript
代码运行次数:0
运行
复制
(concatenate 'string "Blah blah blah"
                     "Blah blah blah"
                     "Blah blah blah"
                     "Blah blah blah")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26277184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档