help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to convert an arbitrary string into a filename


From: Jean Louis
Subject: Re: How to convert an arbitrary string into a filename
Date: Thu, 27 Apr 2023 07:52:55 +0300
User-agent: Mutt/2.2.9+54 (af2080d) (2022-11-21)

* 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.


--
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/





reply via email to

[Prev in Thread] Current Thread [Next in Thread]