1

我想创建基于字符串的 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

谢谢!

4

1 回答 1

3

要使用官方 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"]])
于 2013-10-06T21:24:50.003 回答