如何在字符串列表中添加公共前缀/后缀?

时间:2014-03-24 22:54:46

标签: elisp

如何在字符串列表中添加公共前缀/后缀? 例如:

来自("abc" "123" "xy")

("pre_abc" "pre_123" "pre_xy")

3 个答案:

答案 0 :(得分:3)

尝试

(mapcar (lambda (c) (concat "pre_" x)) '("abc" "123" "xy"))

答案 1 :(得分:1)

在没有第三方库的Emacs中,您使用mapcar函数将函数应用于列表的每个元素,如@sds所示。但是,如果您在Elisp中进行大量编程,我建议安装2个第三方库,dash.el用于列表操作,s.el用于字符串操作。这些库引入了大量具有一致命名方案的辅助功能。对于许多函数,dash.el也有anaphoric个版本,这使得代码更加冗长。因此,要为列表中的每个字符串添加前缀,您可以使用--maps-prepends-append作为后缀):

(--map (s-prepend "x" it) '("a" "b" "c")) ;; => ("xa" "xb" "xc")

答案 2 :(得分:0)

前置操作是(concatenate 'string <strings ...)

所以你可以用

实现目标
(cl-loop
 for item in '("abc" "123" "xy")
 collect (concatenate 'string "pre_" item))

编写/生成字符串的更通用方法是使用格式

使用格式

(cl-loop
 for item in '("abc" "123" "xy")
 collect (format nil "pre_~S" item))

请注意使用cl-lib