- java.lang.Object
-
- java.text.Normalizer
-
public final class Normalizer extends Object
该类提供了将Unicode文本转换为等效的组合或分解形式的方法normalize
,从而更容易地对文本进行排序和搜索。normalize
方法支持Unicode Standard Annex #15 — Unicode Normalization Forms中描述的标准规范化形式。具有重音或其他装饰的字符可以以多种不同的方式以Unicode编码。 例如,以字母A-acute。 在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
方法normalize
口音重新排列成正确的规范,让您不用担心自己的口音重排。W3C通常建议在NFC中交换文本。 还要注意,大多数遗留字符编码仅使用预先形式的形式,并且通常不会自己对任何组合标记进行编码。 要转换为这样的字符编码,Unicode文本需要归一化到NFC。 有关更多使用示例,请参阅Unicode标准附件。
- 从以下版本开始:
- 1.6
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static class
Normalizer.Form
此枚举提供了 Unicode Standard Annex #15 — Unicode Normalization Forms中描述的四种Unicode归一化表单的常量,以及访问它们的两种方法。
-
方法摘要
所有方法 静态方法 具体的方法 Modifier and Type 方法 描述 static boolean
isNormalized(CharSequence src, Normalizer.Form form)
确定给定的char值序列是否被归一化。static String
normalize(CharSequence src, Normalizer.Form form)
归一化一个char值序列。
-
-
-
方法详细信息
-
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
为空。
-
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
- 结果
- 如果char值的序列被归一化则为true; 否则为假。
- 异常
-
NullPointerException
- 如果src
或form
为空。
-
-