排序和范化

Wu Jun 2020-01-02 15:43:49
Categories: > > Tags:

Collator 类实现了 Comparator 接口,Locale 敏感,可以设置不同语言的排序

Collator coll = Collator.getInstance(Locale.US);

1 字符差别强度

排序器有字符差别强度设置:

例如,英语中AZ的差别是首要的,A``Å的差别是其次的,Aa的差别是再次的。

Collator coll = Collator.getInstance();
coll.setStrength(Collator.PRIMARY);
word.sort(coll);

2 分解模式

一个字符在描述成 Unicode 时,可能有多种方式,如Å可以是 Unicode 字符 U+00C5,或分解为A(U+0065)和上方组合环̊ (U+030A)。

对此,Unicode对字符串定义了四种范化形式:D、KD、C和KC。

Collator 可以选择范化程度

Normalizer 实现了对范化的处理

String name = "ÅBC";
String normalized = Normalizer.normalize(name, Normalize.Form.NFD);//"A°BC"