Класс Normalizer
public final class Normalizer extends Object
normalize, который преобразует текст Unicode в эквивалентную составную или разложенную форму, что позволяет упростить сортировку и поиск текста. Метод normalize поддерживает стандартные формы нормализации, описанные в Приложении к стандарту Unicode #15 — Формы нормализации 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.
- Since:
- 1.6
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static enum |
Normalizer.Form |
Этот перечисление предоставляет константы четырех форм нормализации Unicode, описанных в Приложении к стандарту Unicode #15 — Формы нормализации Unicode, и два метода для их доступа. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static boolean |
isNormalized |
Определяет, является ли заданная последовательность значений char нормализованной. |
static String |
normalize |
Нормализует последовательность значений char. |
Подробное описание методов
normalize
public static String normalize(CharSequence src, Normalizer.Form form)
- Параметры:
-
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)
- Параметры:
-
src- Последовательность значений char, подлежащая проверке. -
form- Форма нормализации; одна изNormalizer.Form.NFC,Normalizer.Form.NFD,Normalizer.Form.NFKC,Normalizer.Form.NFKD - Возвращает:
- true, если последовательность значений char нормализована; false в противном случае.
- Исключения:
-
NullPointerException- Еслиsrcилиformравно null.
© 1993, 2021, 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/17/docs/api/java.base/java/text/Normalizer.html