在Elisp中,如何正确插入斜杠的路径字符串?

qaz*_*wsx 10 lisp emacs elisp

我通过连接部分路径和目录名称手动构建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在非目录上使用不可移植,请有人纠正我吗?)