Spec-Zone .ru
спецификации, руководства, описания, API
След: Интернационализация
Урок: Работа с текстом
Раздел: Сравнение Строк
Выполнение Независимых от локали Сравнений
Домашняя страница > Интернационализация > Работа с текстом

Выполнение Независимых от локали Сравнений

Правила сопоставления определяют последовательность вида строк. Эти правила меняются в зависимости от локали, потому что различные слова вида естественных языков по-другому. Можно использовать предопределенные правила сопоставления, обеспеченные Collator class, чтобы сортировать строки независимым от локали способом.

Инстанцировать Collator class вызывает getInstance метод. Обычно, Вы создаете a Collator для значения по умолчанию Locale, как в следующем примере:

Collator myDefaultCollator = Collator.getInstance();

Можно также определить деталь Locale когда Вы создаете a Collator, следующим образом:

Collator myFrenchCollator = Collator.getInstance(Locale.FRENCH);

getInstance метод возвращает a RuleBasedCollator, который является конкретным подклассом Collator. RuleBasedCollator содержит ряд правил, которые определяют порядок сортировки строк для локали, которую Вы определяете. Эти правила предопределяются для каждой локали. Поскольку правила инкапсулируются в пределах RuleBasedCollator, Ваша программа не будет нуждаться в специальных подпрограммах, чтобы иметь дело со способом, которым правила сопоставления меняются в зависимости от языка.

Вы вызываете Collator.compare метод, чтобы выполнить независимое от локали сравнение строк. compare метод возвращает целое число меньше чем, равный, или больше чем нуль, когда первым строковым параметром являются меньше чем, равный, или больше чем второй строковый параметр. Следующая таблица содержит некоторые демонстрационные звонки Collator.compare:

Пример Возвращаемое значение Объяснение
myCollator.compare("abc", "def") -1 "abc" меньше чем "определение"
myCollator.compare("rtf", "rtf") 0 две строки равны
myCollator.compare("xyz", "abc") 1 "xyz" больше чем "abc"

Вы используете compare метод, выполняя операции вида. Пример программы вызывают CollatorDemo использование compare метод, чтобы сортировать массив английских и французских слов. Эта программа показывает то, что может произойти, когда Вы сортируете тот же самый список слов с двумя различными сортировально-подборочными машинами:

Collator fr_FRCollator = Collator.getInstance(new Locale("fr","FR"));
Collator en_USCollator = Collator.getInstance(new Locale("en","US"));

Метод для того, чтобы сортировать, вызванный sortStrings, может использоваться с любым Collator. Заметьте что sortStrings метод вызывает compare метод:

public static void sortStrings(Collator collator, String[] words) {
    String tmp;
    for (int i = 0; i < words.length; i++) {
        for (int j = i + 1; j < words.length; j++) { 
            if (collator.compare(words[i], words[j]) > 0) {
                tmp = words[i];
                words[i] = words[j];
                words[j] = tmp;
            }
        }
    }
}

Англичане Collator сортирует слова следующим образом:

peach
péché
pêche
sin

Согласно правилам сопоставления французского языка, предыдущий список находится в неправильном порядке. Во французском péché должен следовать за pêche в сортированном списке. Французы Collator сортирует массив слов правильно, следующим образом:

peach
pêche
péché
sin

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Сравнение Строк
Следующая страница: Настройка Правил Сопоставления