Класс Normalizer
- java.lang.Object
- java.text.Normalizer
public final class Normalizer extends Object
Этот класс предоставляет метод normalize, который преобразует текст Юникод в эквивалентную составную или разложенную форму, что позволяет упростить сортировку и поиск текста. Метод normalize поддерживает стандартные формы нормализации, описанные в Приложении #15 к стандарту Юникод — Формы нормализации Юникод.
Символы с диакритическими знаками или другими украшениями могут быть закодированы в Юникоде несколькими различными способами. Например, рассмотрим символ A с острым ударением. В Юникоде он может быть закодирован как один символ (форма «составная»):
U+00C1 LATIN CAPITAL LETTER A WITH ACUTEили как два отдельных символа (форма «разложенная»):
U+0041 LATIN CAPITAL LETTER A
U+0301 COMBINING ACUTE ACCENTОднако для пользователя вашей программы обе эти последовательности должны обрабатываться как один и тот же символ «пользовательского уровня» — «A с острым ударением». При поиске или сравнении текста необходимо обеспечить, чтобы эти две последовательности обрабатывались как эквивалентные. Кроме того, необходимо обрабатывать символы с более чем одним диакритическим знаком. Иногда порядок сочетания диакритических знаков важен, в то время как в других случаях последовательности знаков с разным порядком действительно эквивалентны.
Аналогично, строка «ffi» может быть закодирована как три отдельных буквы:
U+0066 LATIN SMALL LETTER F
U+0066 LATIN SMALL LETTER F
U+0069 LATIN SMALL LETTER Iили как один символ U+FB03 LATIN SMALL LIGATURE FFI. Лигатура ffi не является отдельным семантическим символом, и строго говоря, она вообще не должна быть в Юникоде, но она была включена для совместимости с существующими наборами символов, которые её уже предоставляли. Стандарт Юникод определяет такие символы, предоставляя им «совместимые» разложения на соответствующие семантические символы. При сортировке и поиске вы часто захотите использовать эти сопоставления.
Метод normalize помогает решить эти проблемы, преобразуя текст в канонические составные и разложенные формы, как показано в первом примере выше. Кроме того, вы можете выполнить совместимые разложения, чтобы вы могли обрабатывать совместимые символы так же, как и их эквиваленты. Наконец, метод normalize переупорядочивает диакритические знаки в правильном каноническом порядке, чтобы вам не приходилось беспокоиться об этом переупорядочении самостоятельно.
W3C, как правило, рекомендует обмениваться текстами в формате NFC. Обратите также внимание, что большинство устаревших кодировок символов используют только прекомпонованные формы и часто не кодируют знаки объединения сами по себе. Для преобразования в такие кодировки символов текст Юникод должен быть нормализован к NFC. Для получения дополнительных примеров использования см. Приложение к стандарту Юникод.
- Since:
- 1.6
Вложенные классы
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class | Normalizer.Form | Этот перечисление предоставляет константы четырёх форм нормализации Юникод, описанные в Приложении #15 к стандарту Юникод — Формы нормализации Юникод, и два метода для доступа к ним. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
static boolean | isNormalized(CharSequence src,
Normalizer.Form form) | Определяет, является ли данная последовательность значений char нормализованной. |
static String | normalize(CharSequence src,
Normalizer.Form form) | Нормализует последовательность значений char. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitМетоды
normalize
public static String normalize(CharSequence src,
Normalizer.Form form)Нормализует последовательность значений char. Последовательность будет нормализована в соответствии с указанной формой нормализации.
- Parameters:
-
src- Последовательность значений char для нормализации. -
form- Форма нормализации; одна изNormalizer.Form.NFC,Normalizer.Form.NFD,Normalizer.Form.NFKC,Normalizer.Form.NFKD - Returns:
- Нормализованная строка
- Throws:
-
NullPointerException- Еслиsrcилиformравно null.
isNormalized
public static boolean isNormalized(CharSequence src,
Normalizer.Form form)Определяет, является ли данная последовательность значений char нормализованной.
- Parameters:
-
src- Последовательность значений char, которые нужно проверить. -
form- Форма нормализации; одна изNormalizer.Form.NFC,Normalizer.Form.NFD,Normalizer.Form.NFKC,Normalizer.Form.NFKD - Returns:
- true, если последовательность значений char нормализована; false в противном случае.
- Throws:
-
NullPointerException- Еслиsrcилиformравно null.
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/Normalizer.html