gpt4 book ai didi

java - 使用 Java Collat​​or 区分大小写的顺序

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:51:48 24 4
gpt4 key购买 nike

我正在尝试使用 Java Collator 了解区分大小写的顺序应该如何真正起作用.

this example以下字符串在法语语言环境中使用所有优势进行排序(出于说明目的,我在数据集中添加了一些额外的字符串):

[Äbc, äbc, Àbc, àbc, Abc, abc, ABC] - Original Data
[Äbc, äbc, Àbc, àbc, Abc, abc, ABC] Primary
[Abc, abc, ABC, Àbc, àbc, Äbc, äbc] Secondary
[abc, Abc, ABC, àbc, Àbc, äbc, Äbc] Tertiary

Case kicks in only with Tertiary Collation Strength :
[CACHE, cache, Cache, da, DA, Da] - Original Data
[CACHE, cache, Cache, da, DA, Da] Primary
[CACHE, cache, Cache, da, DA, Da] Secondary
[cache, Cache, CACHE, da, Da, DA] Tertiary

但我真正期待的结果是这样的:

[abc, àbc, äbc, Abc, ABC, Àbc, Äbc] Tertiary
[cache, da, Cache, CACHE, Da, DA] Tertiary

换句话说,我希望所有小写字母排在前面(按字母顺序排序),然后是大写字母(反之亦然)。这不是一个合理的期望吗?

最佳答案

有趣的是,android javadoc比 oracle 更有帮助 - 特别是:

A tertiary difference is ignored when there is a primary or secondary difference anywhere in the strings.

另外值得注意的是:您获得的顺序是您在法语语言环境中所期望的顺序。根据wikipedia article on "ordre alphabétique" :

En première analyse, les caractères accentués, de même que les majuscules, ont le même rang alphabétique que le caractère fondamental.
Si plusieurs mots ont le même rang alphabétique, on tâche de les distinguer entre eux grâce aux majuscules et aux accents (pour le e, on a l'ordre e, é, è, ê, ë)

英文(我添加的斜体):

The first step consists in ranking letters, regardless of their accentuation or case (i.e.: a,A,à rank the same). If several words have the same rank following the first step, case and accentuation are taken into account.

换句话说,c(小盘)和D(大盘)将始终按主要强度排序,第三强度不会改变该顺序.

因此在您的示例中,无论大小写和重音如何,您将始终在 da 之前拥有 cache。只有主字母相同时才会区分大小写(例如,c(小)与 C(大))。

关于java - 使用 Java Collat​​or 区分大小写的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18761057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com