F: Wie alphabetisiere ich Zeichenfolgen mit diakritischen Zeichen?
Problem
Ich habe eine lange Liste von Autorennamen, von denen einige Buchstaben mit diakritischen Zeichen enthalten (z. B. "á" oder "é"). Ich möchte diese Liste alphabetisch sortieren.
Das Problem: sort
ing die Liste mit string-lessp
nicht nicht sich alphabetisch sortiert werden .
Gemäß der akzeptierten Antwort in diesem Beitrag von einer Schwesterseite ignoriert Englisch die diakritischen Zeichen beim Sortieren, außer um Bindungen zu lösen. (Andere Sprachen machen es anders.)
Spielzeug Beispiel
Hier ist ein Spielzeugbeispiel. Die Liste der Buchstaben, mit denen ich beginne, ist bereits alphabetisch sortiert. Wenn ich sort
diese Liste
string-lessp
jedoch mit sortiere, werden sie in der von mir angenommenen Unicode-Punktreihenfolge und nicht in alphabetischer Reihenfolge sortiert:
(let ((letters '("a" "à" "á" "â" "b" "c" "e" "é" "ê")))
(sort letters #'string-lessp))
;; => ("a" "b" "c" "e" "à" "á" "â" "é" "ê")
Was mache ich?
Wie kann ich Zeichenfolgen mit diakritischen Zeichen alphabetisieren?
Zumindest möchte ich die oben beschriebene Regel "Diakritika ignorieren, außer Krawatten brechen" respektieren. Idealerweise möchte ich in der Lage sein, nach einer willkürlich definierten Sprache zu alphabetisieren, aber ich werde mich gerne mit Englisch zufrieden geben.