Emacs Lisp:将列表转换为字符串

λ J*_*kas 4 emacs elisp

我正在涉及Emacs Lisp,我正在尝试编写以下函数:

(defun buffer-file-name-body ()
  (last (split-string (buffer-file-name) "/")))
Run Code Online (Sandbox Code Playgroud)

我想要实现的是从提供的完整路径中提取文件名和扩展名(buffer-file-name).然而,这种实现返回一个项目的名单("scratch.el")......我试过几件事情,如传递的结果(last)通过(string)但引发错误...当我搜索谷歌并没有返回任何有用的Emacs列表转换列表中的字符串.我该怎么做?

小智 5

这听起来像你想要的是"(file-name-nondirectory(buffer-file-name))",它返回简单的文件名,没有任何目录信息,作为字符串.

  • @HowardWest嘿,伙计,我上面的评论很好的小猪支持.请再次注意``(buffer-file-name)`为没有访问文件的缓冲区返回`nil`,而`file-name-nondirectory`不能处理`nil`参数. (2认同)
  • @JonasGorauskas啊,别担心.老实说,我认为它甚至不是您实际问题的正确答案,因为它没有告诉您如何从列表中提取字符串值.它可能是你所追求的,但它没有回答你的要求.如果有的话,fvwmer应该得到信用,因为他给出了正确答案. (2认同)