Elisp: String Functions
Here are the most basic string functions in elisp.
;; length (length "abc") ; returns 3
;; Extract a substring (substring myStr myStartPos myEndPos)
;; join strings (concat "some" "thing")
Match String by Regex
;; check if a string matches a pattern (string-match myRegex myStr)
Get Captured String from Regex Match
In emacs, most functions that take a regex argument, after being called, will save/modify info in “match data”, such as caputured groups.
Match data can be accessed by the function
match-data, and other functions.
The most useful is
match-string, which returns the captured string.
;; get captured match ;; second argument is optional, but required if the last match is done by “string-match” (match-string 1 myStr)
Replace in String
;; change a given string using regex. Returns changed string. (replace-regexp-in-string myRegex myReplacement myStr)
;; split string into parts, returns a list (split-string "xy_007_cat" "_")
String To/From Number
(string-to-number "3") ; change datatype (number-to-string 3) ; convert to string (format "%d" 3) ; similar to number-to-string but with fine control
Buffer Text to String
String to Buffer
Emacs has only a few functions that takes a string as argument. Any non-trivial string processing is done with a buffer.
If you got a big string already somehow, you can put into a buffer by using
with-temp-buffer, then insert your string, process it, then use
buffer-string to get the whole buffer content.
;; process string in a temp buffer (with-temp-buffer (insert bigString) (goto-char (point-min)) ;; code to manipulate string. eg delete char, etc ;; return whole buffer string (buffer-string))
Trim String and Others
Emacs 24.4 added many string functions. [see Emacs 24.4 New Features (released 2014-10)]
These are new string functions:
To use them, you need to first
(require 'subr-x) (string-trim " something ") ; ⇒ "something"
Note: these functions are not documented and are kinda experimental. In the file header, it says it shouldn't be documented.
;; Do not document these functions in the lispref. ;; http://lists.gnu.org/archive/html/emacs-devel/2014-01/msg01006.html