У кого-либо есть какой-либо код для расположения в алфавитном порядке арабского и японского текста, который находится в Unicode? Если бы код был в рубине, который был бы большим.
Кодовые точки Юникода перечислены не в алфавитном порядке (Z < a, например), но они все равно стараются быть примерно в таком порядке. Существует канонический порядок Юникода, определяемый Unicode Collation Algorithm, а также порядок, специфичный для конкретного языка (французский порядок не совсем такой же, как немецкий или чешский, даже при том же алфавите), который может быть указан в информации о локали. Я думаю, что библиотека ICU содержит алгоритмы для конкретного языка, которые вы ищете.
Я не знаю Ruby, но в python есть функция ord (), которая переводит специальный символ Юникода в его кодовую точку Юникода. Например,
>>> a = u'ل'
>>> ord(a)
0: 1604
>>> b = u'ع'
>>> ord(b)
1: 1593
Поищите что-то подобное в Ruby. Я предполагаю, что арабские символы перечислены в юникоде в алфавитном порядке.
Чтобы задать очевидный вопрос, что вам не нравится в mylist.sort
?
В зависимости от ваших потребностей words.sort
на рубине подойдет для японского языка. Порядок, в котором символы отображаются в Юникоде, находится в достаточно хорошем порядке сортировки. Не могу поручиться за арабский, но думаю, что это тоже нормально.
mylist.sort
должен работать из коробки в Ruby 1.9 (который имеет встроенная поддержка юникода). В Ruby 1.8, где поддержка Unicode не встроена, я думаю, вам придется использовать гем character-encodings
, расширяющий класс String с помощью сравнения строк UTF-8. (И тогда mylist.sort
будет работать.)