2012-09-05 120 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

相关问题