如何在字符串列表中添加公共前缀/后缀? 例如:
来自("abc" "123" "xy")
至("pre_abc" "pre_123" "pre_xy")
答案 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个版本,这使得代码更加冗长。因此,要为列表中的每个字符串添加前缀,您可以使用--map
和s-prepend
(s-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
包