2012-09-05 164 views

回答

17

一種方法是使用substring(或substring-no-properties):

(substring "Test.m" 0 -2) => "Test" 

substringSTRINGFROM&optionalTO

返回一個新字符串,其內容是一子STRING。該 返回的字符串包含指數指數之間的漢字是從 (含)至STRING的(唯一的)。 是 零索引:0表示STRING的第一個字符。 負數值 從的末尾開始計數,STRING如果nil,子串運行 到的末尾STRING

+0

非常感謝。 – Peter

2

可能是最靈活的選擇(雖然目前還不清楚,如果你需要更大的靈活性)是使用replace-regexp-in-string

˚Freplace-regexp-in-stringRET

如:

(replace-regexp-in-string "\\..*" "" "Test.m") 
7

在您的特殊情況下,您可能會喜歡使用file-name-sans-extension

6

Stefan's answer是慣用的,當你只需要一個沒有擴展名的文件名。但是,如果您在代碼中大量操作文件和文件路徑,我建議安裝Johan Andersson的f.el文件和目錄API,因爲它提供了許多Emacs中沒有的功能,並且具有一致的API。檢查出功能f-basef-no-ext

(f-base "~/doc/index.org") ; => "index" 
(f-no-ext "~/doc/index.org") ; => "~/doc/index" 

相反,如果你使用字符串經常工作,安裝Magnar Sveen的s.el出於同樣的原因。你可能在s-chop-suffix感興趣:

(s-chop-suffix ".org" "~/doc/index.org") ; => "~/doc/index" 

對於一般的子檢索使用dkim's answer

+0

這是一個很好的高級解決方案。謝謝。 – Jabba

相關問題