gpt4 book ai didi

java - 中文字母顺序 - java.text.Collat​​or

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:50:50 26 4
gpt4 key购买 nike

我一直在测试中文的字母排序(如果我可以这样称呼的话)。这是 Excel 对一些示例词进行排序的方式:

啊<波<词<的<俄<佛<歌<和<及<课<了<馍<呢<票<气<日<四<特<瓦<喜<以<只

0<2<85<!<@<版本<标记<成员<错误<导出<导航<Excel 文件<访问<分类<更改<规则<HTML<基本<记录<可选<快捷方式<类别<历史记录<密码<目录<内联<内容<讨论<文件<页面<只读

这就是 Collections.sort(list, simplified_chinese_collat​​or_comparator) 的结果(第一个违规字符以粗体显示):

啊<波<词<的<俄<佛<歌<和<及<课<了<呢<票<气<日<四<特<瓦<喜<以<只<

!<@<0<2<85<Excel 文件<HTML<版本<标记<成员<错误<导出<导航<访问<分类<更改<规则<基本<记录 <可选<快捷方式<类别<历史记录<密码<目录<内联<内容<讨论<文件<页面<只读

我对中文一窍不通。有谁知道为什么 Collat​​or 输出不同,或者它基于什么?

是否有任何其他库用于基于语言的排序?

最佳答案

为什么不一样?因为有几种不同的方法可以对表意字符甚至整个单词进行排序。留在我脑海中的是:

  • 按笔画数
  • 通过使用拉丁音译然后“自然地”排序(当然是根据中文特定的规则)

还有其他方法,例如Unicode Technical Report #35提到了其中一些(更多是巧合,不是故意的),但你必须有足够的时间来完成它。

要回答您的问题,为什么这些排序顺序不同,这只是因为 Java 包含自己的排序规则并且它不依赖于操作系统的排序规则(如 Excel 那样)。这些规则可能不同。您可能还想试试 ICU ,它是 Java 中类和规则的来源(通常比 JDK 领先一步)。

关于java - 中文字母顺序 - java.text.Collat​​or,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13285727/

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