- java.lang.Object
-
- java.text.Normalizer
-
public final class Normalizerextends Object
该类提供方法normalize
,其将Unicode文本转换为等效的组合或分解形式,允许更容易地排序和搜索文本。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 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 FFI
ffi连字不是一个独特的语义字符,严格来说它根本不应该是Unicode,但它是为了与已经提供它的现有字符集兼容而包含的。 Unicode标准通过将“兼容性”分解赋予相应的语义字符来识别这些字符。 排序和搜索时,您经常需要使用这些映射。normalize
方法通过将文本转换为规范组合和分解形式来帮助解决这些问题,如上面第一个例子所示。 此外,您可以让它执行兼容性分解,以便您可以将兼容性字符视为与其等效字符相同。 最后,normalize
方法将重音重新排列为正确的规范顺序,这样您就不必担心自己的重音重排。W3C通常建议在NFC中交换文本。 还要注意,大多数遗留字符编码仅使用预先组合的表单,并且通常不会自己编码任何组合标记。 要转换为此类字符编码,需要将Unicode文本规范化为NFC。 有关更多用法示例,请参阅Unicode标准附件。
- 从以下版本开始:
- 1.6
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 static class
Normalizer.Form
此枚举提供了 Unicode Standard Annex #15 — Unicode Normalization Forms中描述的四种Unicode规范化形式的 常量以及两种访问它们的方法。
-
方法摘要
所有方法 静态方法 具体的方法 变量和类型 方法 描述 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;否则返回false。 否则是假的。
- 异常
-
NullPointerException
- 如果src
或form
为空。
-
-