2014-12-04 83 views
2

我找得到的目錄路徑,或從路徑目錄本身的最後一個組件的簡單便攜式方式獲取目錄名(而不是路徑)。該功能的語義應該是這樣的:的Emacs Lisp:從路徑

(get-dirname-nonpath "/some/dir/") ;; should return "dir" 
(get-dirname-nonpaht "C:\Windows\Path") ;; should return "Path" 
(get-dirname-nonpath "/some/path/to/my/source.ext") ;; returns "my" 

在最後一個例子,還罰款,如果該函數返回「source.ext」,而不是「我的」,尤其是如果這將使它更短。 看着emacs,我無法找到一個內置的函數來幫助實現這個功能:

當然,我可以用(後退)斜線做一些字符串處理,但看起來很亂,更像是一個黑客攻擊。以一種強大的(操作系統不知情)方式做到這一點的正確方法是什麼?

編輯:最好的我能找到到目前爲止是:(file-name-nondirectory (directory-file-name ...))

回答

8

(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"