I would like to write an if statement that will do something base on whether a string is empty. For example:
(defun prepend-dot-if-not-empty (user-str)
(interactive "s")
(if (is-empty user-str)
(setq user-str (concat "." user-str)))
(message user-str))
In this contrived example, I'm using (is-empty) in place of the real elisp method. What is the right way of doing this?
Thanks
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)
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).
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With