Spec-Zone.ru › OpenJDK 27

Класс Normalizer

java.lang.Object
java.text.Normalizer
public final class Normalizer extends Object
Этот класс предоставляет метод normalize, который преобразует текст Unicode в эквивалентную составную или разложенную форму, упрощая сортировку и поиск текста. Метод normalize поддерживает стандартные формы нормализации, описанные в Приложении № 15 к стандарту Unicode — Формы нормализации Unicode.

Символы с диакритическими знаками и другими надстрочными или подстрочными знаками могут быть представлены в 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.

Начиная с:
1.6
Внешние спецификации
  • Формы нормализации Unicode

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static enum  Normalizer.Form
Это перечисление содержит константы для четырёх форм нормализации Unicode, описанных в Приложении № 15 к стандарту Unicode — Формы нормализации Unicode, и два метода для доступа к ним.

Краткое описание методов

Модификатор и тип Метод Описание
static boolean isNormalized(CharSequence src, Normalizer.Form form)
Определяет, нормализована ли заданная последовательность значений char.
static String normalize(CharSequence src, Normalizer.Form form)
Нормализует последовательность значений char.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, «равен ли» этот объект другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Подробное описание методов

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.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API