Regex 如何将带有法语口音的字符串转换为URL(替换重音字母)?

Regex 如何将带有法语口音的字符串转换为URL(替换重音字母)?,regex,clojure,Regex,Clojure,我想创建基于字符串的URL,该字符串自动将带有法语口音的字符串转换为URL (defn str->url [] ...) (defn str->url-case [] ...) (str->url "Élise Noël") ;=> "/elise-noel" (str->url-case "Élise Noël") ;=> "/Elise-Noel" 以下是等效的非重音字母: À, Â -> A Æ -> AE Ç -> C É, È

我想创建基于字符串的URL,该字符串自动将带有法语口音的字符串转换为URL

(defn str->url [] ...)
(defn str->url-case [] ...)

(str->url "Élise Noël")
;=> "/elise-noel"
(str->url-case "Élise Noël")
;=> "/Elise-Noel"
以下是等效的非重音字母:

À, Â -> A 
Æ -> AE
Ç -> C
É, È, Ê, Ë -> E
Î, Ï -> I
Ô -> O
Π-> OE 
Ù, Û, Ü -> U    
Ÿ -> Y

à, â -> a
æ -> ae
ç -> c
é, è, ê, ë -> e
î, ï -> i 
ô -> o
œ -> oe
ù, û, ü -> u
ÿ -> y

谢谢大家!

要使用官方URL编码格式(
application/x-www-form-urlencoded
),这与删除重音符号不同,您可以执行以下操作:

user> (java.net.URLEncoder/encode "Élise Noël" "UTF-8")
"%C3%89lise+No%C3%ABl"
要使用问题中的替换项,只需将
clojure.string/replace
与字符串上的每个替换项对映射即可

下面是一个示例,其中包含示例字符串所需的替换对。其余部分只需遵循相同的模式:

(reduce (fn [s [pat repl]]
          (clojure.string/replace s pat repl))
        "Élise Noël"
        [[" " "-"]
         [#"[ÉÈÊË]" "E"]
         [#"[éèêë]" "e"]])