Расположите в алфавитном порядке арабский и японский текст, который находится в Unicode?

У кого-либо есть какой-либо код для расположения в алфавитном порядке арабского и японского текста, который находится в Unicode? Если бы код был в рубине, который был бы большим.

5
задан sosborn 29 November 2011 в 13:59
поделиться

5 ответов

Кодовые точки Юникода перечислены не в алфавитном порядке (Z < a, например), но они все равно стараются быть примерно в таком порядке. Существует канонический порядок Юникода, определяемый Unicode Collation Algorithm, а также порядок, специфичный для конкретного языка (французский порядок не совсем такой же, как немецкий или чешский, даже при том же алфавите), который может быть указан в информации о локали. Я думаю, что библиотека ICU содержит алгоритмы для конкретного языка, которые вы ищете.

4
ответ дан 15 December 2019 в 00:59
поделиться

Я не знаю Ruby, но в python есть функция ord (), которая переводит специальный символ Юникода в его кодовую точку Юникода. Например,

>>> a = u'ل'
>>> ord(a)
0: 1604
>>> b = u'ع'
>>> ord(b)
1: 1593

Поищите что-то подобное в Ruby. Я предполагаю, что арабские символы перечислены в юникоде в алфавитном порядке.

0
ответ дан 15 December 2019 в 00:59
поделиться

Чтобы задать очевидный вопрос, что вам не нравится в mylist.sort ?

0
ответ дан 15 December 2019 в 00:59
поделиться

В зависимости от ваших потребностей words.sort на рубине подойдет для японского языка. Порядок, в котором символы отображаются в Юникоде, находится в достаточно хорошем порядке сортировки. Не могу поручиться за арабский, но думаю, что это тоже нормально.

0
ответ дан 15 December 2019 в 00:59
поделиться

mylist.sort должен работать из коробки в Ruby 1.9 (который имеет встроенная поддержка юникода). В Ruby 1.8, где поддержка Unicode не встроена, я думаю, вам придется использовать гем character-encodings , расширяющий класс String с помощью сравнения строк UTF-8. (И тогда mylist.sort будет работать.)

0
ответ дан 15 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: