How to check if a string is empty in Emacs Lisp?

Starting in emacs 24.4, there are two different functions available for you to call, depending on what you mean by 'empty'.

(string-empty-p " ")
nil

(string-blank-p " ")
0

I'm having trouble finding docs to link to, but emacsredux.com has more information.

If you get the error Symbol's function definition is void., include (require 'subr-x) in the initialization file (it's a package for trimming and string manipulation).


I keep this one in my utils.lisp:

(defun empty-string-p (string)
  "Return true if the STRING is empty or nil. Expects string type."
  (or (null string)
      (zerop (length (string-trim string)))))

then I do:

(not (empty-string-p some-string))

Since in elisp, a String is an int array, you can use

(= (length user-str) 0)

You can also use (string=) which is usually easier to read

(string= "" user-str)

Equal works as well, but a bit slower:

(equal "" user-str)

If you work with strings heavily in your code, i strongly recommend using Magnar Sveen's s.el string manipulation library.

s-blank? checks if the string is empty:

(s-blank? "") ; => t

Tags:

Emacs

Elisp