replace-string has the
DELIMITED parameter, which can be used to replace only whole words.
replace-in-string does not have such a parameter. Is there an easy work-around besides creating a temporary buffer and using
I don't know the function
replace-in-string, but assuming it uses emacs regex (or using
replace-regexp-in-string) you should be able to use word boundaries. You could match
foo by using
\bfoo\b (or in a string
For example, evaluating
(replace-regexp-in-string "\\bfoo\\b" "bar" "afoo foob foo moo") would result in the string
"afoo foob bar moo".
See here for a detailed description.
Based on the answer of @theldoria, here is the function:
(defun replace-in-string-whole-words(what with in) "Like 'replace-in-string, but replaces whole words." (replace-regexp-in-string (concat "\\b" what "\\b") with in))