我想基于字符串创建网址,自动将带有法语口音的字符串转换为网址。
(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
谢谢!
答案 0 :(得分:3)
要使用官方网址编码格式(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"]])