我通过连接部分路径和目录名称手动构建Elisp中的路径字符串.不幸的是,有时路径以斜线结束,有时不是.因此,我需要在必要时在连接目录名之前插入斜杠,但不是这样.这样做的好方法是什么?
phi*_*ils 13
(file-name-as-directory dir)
将返回dir
带有斜杠的目录路径,必要时添加一个,否则不添加.
如果列表中有部分路径序列,则可以执行以下操作:
(let ((directory-list '("/foo" "bar/" "p/q/" "x/y"))
(file-name "some_file.el"))
(concat
(mapconcat 'file-name-as-directory directory-list "")
file-name))
"/foo/bar/p/q/x/y/some_file.el"
Run Code Online (Sandbox Code Playgroud)
或者作为替代方案,如果您想在列表中包含文件名,您可以使用directory-file-name
与以下相反的文件名file-name-as-directory
:
(let ((path-list '("/foo" "bar/" "p/q/" "x/y/some_file.el")))
(mapconcat 'directory-file-name path-list "/"))
"/foo/bar/p/q/x/y/some_file.el"
Run Code Online (Sandbox Code Playgroud)
(如果directory-file-name
在非目录上使用不可移植,请有人纠正我吗?)