首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查Emacs Lisp中的字符串是否为空?

如何检查Emacs Lisp中的字符串是否为空?
EN

Stack Overflow用户
提问于 2009-06-19 19:57:39
回答 5查看 15.9K关注 0票数 36

我想写一个if语句,它会根据字符串是否为空来做一些事情。例如:

代码语言:javascript
复制
(defun prepend-dot-if-not-empty (user-str)
   (interactive "s")
   (if (is-empty user-str)
     (setq user-str (concat "." user-str)))
   (message user-str))

在这个人为设计的示例中,我使用(is-empty)代替真正的elisp方法。这样做的正确方法是什么?

谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-06-19 20:08:38

因为在elisp中,字符串是一个整型数组,所以可以使用

代码语言:javascript
复制
(= (length user-str) 0)

您还可以使用(string=),它通常更易于阅读

代码语言:javascript
复制
(string= "" user-str)

Equal也可以工作,但速度稍慢:

代码语言:javascript
复制
(equal "" user-str)
票数 49
EN

Stack Overflow用户

发布于 2018-10-19 00:17:05

从emacs 24.4开始,您可以调用两个不同的函数,这取决于您所说的“空”是什么意思。

代码语言:javascript
复制
(string-empty-p " ")
nil

(string-blank-p " ")
0

我在查找要链接的文档时遇到了问题,但emacsredux.com有更多信息。

如果您得到错误Symbol's function definition is void.,请在初始化文件(它是一个用于裁剪和字符串操作的包)中包含(require 'subr-x)

票数 8
EN

Stack Overflow用户

发布于 2014-03-18 12:28:16

如果您在代码中大量使用字符串,我强烈建议您使用Magnar Sveen的s.el字符串操作库。

s-blank?检查字符串是否为空:

代码语言:javascript
复制
(s-blank? "") ; => t
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1019778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档