Emacs has often been criticized for failing to provide a more extensive string manipulation API (compared to that of programming languages like Ruby and Perl, for instance). As many programs (extensions) running on top of it are doing quite a lot of string manipulation, having a good string API is important. To compensate the lack of certain primitives in Emacs itself a lot of package authors are using these days packages like s.el or simply adding the string functions they need directly to their packages (to reduce the number of third-party deps).
In Emacs 24.4 finally the situation is improving. Finally, we’re getting
string-suffix-p, which was mysteriously missing even though
has been part of Emacs for years:
(string-suffix-p "test" "my_test") ; => t (string-suffix-p "tester" "my_test") ; => nil
More importantly, Emacs 24.4 ships with a new built-in library called
subr-x, which features
a bunch of other string manipulation functions:
Here’s a brief demo of them in action:
;; all functions in the library are defined as inline, so you don't ;; need to require the library at runtime (eval-when-compile (require 'subr-x)) (string-empty-p "") ; => t (string-empty-p " ") ; => nil (string-blank-p " ") ; => 0 (#o0, #x0, ?\C-@) (string-reverse "Batman") ; => "namtaB" (string-join '("one" "two" "three")) ; => "onetwothree" (string-join '("one" "two" "three") ",") ; => "one,two,three" (string-trim " Peter Parker ") ; => "Peter Parker" (string-remove-prefix "Mr. " "Mr. Smith") ; => "Smith" (string-remove-suffix "Smith" "Mr. Smith") ; => "Mr. "
subr-x is not as extensive as
s.el (and will never be), but
I think that it’s a big step in the right direction. It’s likely that
subr-x will be extended in subsequent Emacs versions and some of the
functions from it will be promoted to
That’s all I have for now. Until next time!