Класс Normalizer
- java.lang.Object
-
- java.text.Normalizer
public final class Normalizer extends Object
Этот класс предоставляет метод normalize, который преобразует текст Unicode в эквивалентную составную или разложенную форму, что упрощает сортировку и поиск текста. Метод normalize поддерживает стандартные формы нормализации, описанные в приложении Unicode Standard Annex #15 — Unicode Normalization Forms.
Символы с диакритическими знаками или другими украшениями могут быть закодированы в Unicode несколькими различными способами. Например, рассмотрим символ A-с остротой. В Unicode он может быть закодирован как единый символ (форма "составной"):
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 не является самостоятельным семантическим символом и, строго говоря, не должна присутствовать в Unicode, но она была включена для совместимости с существующими наборами символов, которые уже её предоставляли. Стандарт Unicode определяет такие символы, давая им "совместимые" разложения на соответствующие семантические символы. При сортировке и поиске часто требуется использовать эти отображения.
Метод normalize помогает решить эти проблемы, преобразовывая текст в каноническую составную и разложенную формы, как показано в первом примере выше. Кроме того, вы можете заставить его выполнять совместимые разложения, чтобы вы могли обрабатывать совместимые символы так же, как и их эквиваленты. Наконец, метод normalize переупорядочивает диакритики в правильном каноническом порядке, чтобы вам не приходилось этим заниматься самостоятельно.
W3C обычно рекомендует обмениваться текстами в формате NFC. Обратите также внимание, что большинство устаревших кодировок символов используют только составные формы и часто не кодируют какие-либо знаки объединения самостоятельно. Для преобразования в такие кодировки символов текст Unicode необходимо привести к нормальной форме NFC. Более подробные примеры использования см. в приложении Unicode Standard Annex.
- Since:
- 1.6
Вложенные классы
| Модификатор и тип | Класс и описание |
|---|---|
static class |
Normalizer.Form
Этот перечисление предоставляет константы четырех форм нормализации Unicode, описанных в приложении Unicode Standard Annex #15 — Unicode Normalization Forms, и два метода для доступа к ним. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
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. Последовательность будет нормализована в соответствии с указанной формой нормализации.
- Параметры:
-
src- Последовательность значений char для нормализации. -
form- Форма нормализации; одна изNormalizer.Form.NFC,Normalizer.Form.NFD,Normalizer.Form.NFKC,Normalizer.Form.NFKD - Возвращает:
- Нормализованную строку
- Исключения:
-
NullPointerException- Еслиsrcилиformравно null.
isNormalized
public static boolean isNormalized(CharSequence src,
Normalizer.Form form)
Определяет, является ли данная последовательность значений char нормализованной.
- Параметры:
-
src- Последовательность значений char для проверки. -
form- Форма нормализации; одна изNormalizer.Form.NFC,Normalizer.Form.NFD,Normalizer.Form.NFKC,Normalizer.Form.NFKD - Возвращает:
- true, если последовательность значений char нормализована; false в противном случае.
- Исключения:
-
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.