Date: Thu, 27 Apr 2023 07:52:55 +0300
From: Jean Louis <bugs@gnu.support>
Cc: help-gnu-emacs@gnu.org
* Eli Zaretskii <eliz@gnu.org> [2023-04-26 16:09]:
If you need to convert an accented character to its base character
(i.e. "remove" the accent), Emacs has much more general facilities:
(require 'ucs-normalize)
(substring (ucs-normalize-NFKD-string "Ć") 0 1)
=> "C"
Alright, then like this:
(defun string-slug (s &optional random)
"Return slug for Website Revision System by using string S.
RANDOM number may be added on the end."
(let* ((random (or random nil))
;; (case-fold-search t)
(s (replace-regexp-in-string "[^[:word:]]" " " s))
(s (replace-regexp-in-string " +" " " s))
(s (substring (ucs-normalize-NFKD-string s) 0 1))
(s (replace-regexp-in-string "^[[:space:]]+" "" s))
(s (replace-regexp-in-string "[[:space:]]+$" "" s))
(s (replace-regexp-in-string " " "-" s))
(s (if random (concat s "-" (number-to-string (random-number))) s)))
s))
(string-slug " OK, here, üößčć") ➜ ""
It doesn't give good result.