java.lang.Object
java.text.Normalizer
此类提供方法
normalize 将 Unicode 文本转换为等效的组合或分解形式,以便更轻松地对文本进行排序和搜索。 normalize 方法支持 Unicode 标准附件 #15 — Unicode 规范化形式 中描述的标准规范化形式。
带有重音符号或其他装饰的字符可以在 Unicode 中以几种不同的方式编码。例如,以字符 A-acute 为例。在 Unicode 中,这可以编码为单个字符(“组合”形式):
U+00C1 LATIN CAPITAL LETTER A WITH ACUTE或作为两个单独的字符(“分解”形式):
U+0041 LATIN CAPITAL LETTER A U+0301 COMBINING ACUTE ACCENT然而,对于您程序的用户,这两个序列都应被视为相同的“用户级”字符“A with acute accent”。在搜索或比较文本时,必须确保将这两个序列视为等同的。此外,您必须处理具有不止一种重音的字符。有时一个字符组合重音的顺序很重要,而在其他情况下,不同顺序的重音序列实际上是等价的。
类似地,字符串“ffi”可以编码为三个单独的字母:
U+0066 LATIN SMALL LETTER F U+0066 LATIN SMALL LETTER F U+0069 LATIN SMALL LETTER I或作为单个字符
U+FB03 LATIN SMALL LIGATURE FFIffi 连字不是一个独特的语义字符,严格来说它根本不应该在 Unicode 中,但包含它是为了与已经提供它的现有字符集兼容。 Unicode 标准通过将它们“兼容性”分解为相应的语义字符来识别此类字符。在排序和搜索时,您会经常想使用这些映射。
normalize 方法通过将文本转换为规范的组合和分解形式来帮助解决这些问题,如上面的第一个示例所示。此外,您可以让它执行兼容性分解,以便您可以将兼容性字符视为与其等效字符相同。最后,normalize 方法将重音重新排列为正确的规范顺序,因此您不必自己担心重音重新排列。
W3C 通常建议在 NFC 中交换文本。另请注意,大多数遗留字符编码仅使用预组合形式,并且通常不会自行编码任何组合标记。要转换为此类字符编码,需要将 Unicode 文本规范化为 NFC。有关更多用法示例,请参阅 Unicode 标准附件。
- 自从:
- 1.6
-
内部类总结
内部类 -
方法总结
修饰符和类型方法描述static booleanisNormalized(CharSequence src, Normalizer.Form form) 确定给定的 char 值序列是否已规范化。static Stringnormalize(CharSequence src, Normalizer.Form form) 标准化一系列 char 值。
-
方法详情
-
normalize
标准化一系列 char 值。序列将根据指定的规范化形式进行规范化。- 参数:
src- 要规范化的 char 值序列。form- 规范化形式;Normalizer.Form.NFC、Normalizer.Form.NFD、Normalizer.Form.NFKC、Normalizer.Form.NFKD之一- 返回:
- 规范化字符串
- 抛出:
NullPointerException- 如果src或form为空。
-
isNormalized
确定给定的 char 值序列是否已规范化。- 参数:
src- 要检查的字符值序列。form- 规范化形式;Normalizer.Form.NFC、Normalizer.Form.NFD、Normalizer.Form.NFKC、Normalizer.Form.NFKD之一- 返回:
- 如果 char 值的序列被规范化,则为真;否则为假。
- 抛出:
NullPointerException- 如果src或form为空。
-