在Clojure中对拉丁字符串进行排序

时间:2015-02-11 13:33:30

标签: sorting clojure

我在REPL中做了这个实验:

(sort ["maa" "ácw" "ijl" "aez" "jkl"])

我明白了:

("aez" "ijl" "jkl" "maa" "ácw")

正确的答案是:

("ácw" "aez" "ijl" "jkl" "maa")

有没有办法在Clojure中对拉丁字符串进行本地排序?如果不是为什么不呢?

看,我没有问如何对此进行排序,我知道我可以通过管道传递seq并替换非ANSI字符。

1 个答案:

答案 0 :(得分:6)

您可以在REPL上使用Collator类:

=> (import java.util.Locale)
java.util.Locale
=> (import java.text.Collator)
java.text.Collator
=> (def collator (Collator/getInstance (Locale. "pt_BR")))
#'user/collator
=> (sort collator ["maa" "ácw" "ijl" "aez" "jkl"])
("ácw" "aez" "ijl" "jkl" "maa")

在这个例子中,我使用的是巴西Locale。您需要将此区域设置更改为要使用的区域设置。有一个受支持的区域设置列表here