在Elisp中,如何获取正确插入斜杠的路径字符串? [英] In Elisp, how to get path string with slash properly inserted?
问题描述
(file-name-as-directory dir)
将返回目录路径 dir
带有斜杠,如有必要,添加一个,否则。
如果您有序列部分路径在列表中,您可以执行以下操作:
(let((directory-列表'(/ foobar /p / q /x / y))
(文件名some_file.el))
(concat
mapconcat'file-name-as-directory directory-list)
file-name))
/foo/bar/p/q/x/y/some_file.el
或作为替代方案,如果要在列表中包含文件名,可以使用 directory-file-name
与 file-name-as-directory
相反:
(let((path-list'(/ foobar /p / q / y / some_file.el)))
(mapconcat'directory-file-name路径列表/))
/foo/bar/p/q/x/y/some_file.el
(如果在非目录下使用 directory-file-name
,有人请不要使用?)
I am manually constructing path strings in Elisp by concatenating partial paths and directory names. Unfortunately sometimes the paths end with slash, sometimes not. Therefore, I need to insert slash before concatenating a directory name when necessary but not otherwise. What's a good way to do this?
(file-name-as-directory dir)
will return directory path dir
with a trailing slash, adding one if necessary, and not otherwise.
If you had your sequence of partial paths in a list, you could do something like:
(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"
or as an alternative, if you wanted to include the file name in the list, you could utilise directory-file-name
which does the opposite of 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"
(Someone please correct me if using directory-file-name
on a non-directory is not portable?)
这篇关于在Elisp中,如何获取正确插入斜杠的路径字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!