当我有一个像"Test.m"这样的字符串时,如何从elisp中获取子字符串"Test"?我正在尝试在我的.emacs文件中使用它.
dki*_*kim 23
一种方法是使用substring(或substring-no-properties):
(substring "Test.m" 0 -2) => "Test"
Run Code Online (Sandbox Code Playgroud)
(
substringSTRING FROM&optionalTO)返回一个新字符串,其内容是STRING的子字符串.返回的字符串由STRING的索引FROM (包含)和索引TO(不包括)之间的字符组成. FROM和TO为零索引:0表示STRING的第一个字符. 从STRING结束开始计算负值. 如果TO是,子串运行到结束STRING.
nil
当你只需要一个没有扩展名的文件名时,Stefan的答案是惯用的.但是,如果您在代码中大量操作文件和文件路径,我建议安装Johan Andersson的f.el文件和目录API,因为它在Emacs中提供了许多具有一致API的功能.检查功能f-base和f-no-ext:
(f-base "~/doc/index.org") ; => "index"
(f-no-ext "~/doc/index.org") ; => "~/doc/index"
Run Code Online (Sandbox Code Playgroud)
相反,如果您经常使用字符串,请安装Magnar Sveen s.el,原因相同.您可能对以下内容感兴趣s-chop-suffix:
(s-chop-suffix ".org" "~/doc/index.org") ; => "~/doc/index"
Run Code Online (Sandbox Code Playgroud)
对于通用子字符串检索,请使用dkim的答案.