我正在寻找一种简单且可移植的方法来获取目录路径的最后一个组件或从路径中获取目录本身。函数的语义应该是这样的:
(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"
在最后一个例子中,如果函数返回“source.ext”而不是“my”也很好,特别是如果这会使它更短。
查看 emacs,我找不到有助于实现此目的的内置函数:
当然,我可以使用(反)斜杠进行一些字符串操作,但这看起来很困惑,更像是一种黑客攻击。以健壮(不考虑操作系统)的方式执行此操作的正确方法是什么?
编辑 :到目前为止我能找到的最好的是:
(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"
.
关于Emacs 口齿不清 : Get directory name (not path) from the path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27284851/