eol*_*old 2 directory emacs elisp cross-platform path
我要寻找一个简单的和便携式获得的目录路径,或从路径目录本身的最后一个组件的方式.函数的语义应该是这样的:
(get-dirname-nonpath "/some/dir/") ;; should return "dir"
(get-dirname-nonpath "C:\Windows\Path") ;; should return "Path"
(get-dirname-nonpath "/some/path/to/my/source.ext") ;; returns "my"
Run Code Online (Sandbox Code Playgroud)
在最后一个例子中,如果函数返回"source.ext"而不是"my",那也没关系,特别是如果它会缩短它.查看emacs,我无法找到有助于实现此目的的内置函数:
当然,我可以使用(后退)斜杠进行一些字符串操作,但这看起来很混乱,更像是一个黑客.以强健(OS-oblivious)方式执行此操作的正确方法是什么?
编辑:到目前为止我能找到的最好的是:(file-name-nondirectory (directory-file-name ...))
(file-name-nondirectory (directory-file-name (file-name-directory ...)))
如果你想让第三个例子工作,你需要最后一部分:
(file-name-nondirectory
(directory-file-name
(file-name-directory "/some/path/to/my/source.ext")))
回报"my".