elisp怎么生成重复的字符串?

(defun repeat-string (n str)
  (if (<= n 1)
      str
    (concat str (repeat-string (- n 1) str))))

这算是现成的函数吗?

(apply 'concat (make-list 3 "abc"))
;; => "abcabcabc"
4 个赞

或者可以这样:

(mapconcat #'identity (make-list 3 "abc") "")

把最后面的空字符换成别的,比如 "*" ,还可以生成形如 abc*abc*abc这种字符串

2 个赞
(s-repeat 3 "abc")
     => "abcabcabc"
1 个赞

引入第三方 package 有点杀鸡用牛刀,如果不是有大量跟字符串相关的操作,自己写个函数更实际。

我的意思是,当你需要大量的字符串操作函数,例如:

(string-aaa ...)
(string-bbb ...)
;; ....
(string-xxx ...)
(string-yyy ...)
(string-zzz ...)

自己一一实现的工作量比较大,才有引入第三方包的必要。如果只是一个简单的 repeat 函数,自己写比较可控。