如何在 Common Lisp 中按字母顺序对 unicode 字符串进行排序?
How to sort unicode strings alphabetically in Common Lisp?
这个:
(sort '("Aaa" "Ééé" "Zzz") #'string-lessp)
;; ("Aaa" "Zzz" "Ééé")
不太满意,因为“Ééé”应该在"Zzz"之前。
我们如何按字母顺序对 unicode 字符串进行排序?
我目前的方法是创建字符串的副本,将重音字母替换为对应的字母(使用 cl-slug:asciify,调用 ppcre:regexp-replace-all),对其进行排序并显示原字符串返回。
谢谢。
如果您使用 SBCL,您已经集成了对 unicode 的支持。
尝试使用 unicode< 而不是 string-lessp 进行排序。
这个:
(sort '("Aaa" "Ééé" "Zzz") #'string-lessp)
;; ("Aaa" "Zzz" "Ééé")
不太满意,因为“Ééé”应该在"Zzz"之前。
我们如何按字母顺序对 unicode 字符串进行排序?
我目前的方法是创建字符串的副本,将重音字母替换为对应的字母(使用 cl-slug:asciify,调用 ppcre:regexp-replace-all),对其进行排序并显示原字符串返回。
谢谢。
如果您使用 SBCL,您已经集成了对 unicode 的支持。
尝试使用 unicode< 而不是 string-lessp 进行排序。