【问题标题】:Ignoring diacritics when ordering alphabetically按字母顺序排序时忽略变音符号
【发布时间】:2011-04-06 14:14:05
【问题描述】:

我正在制作一个 Java 应用程序,它从 SQLite 接收一些名称并将它们放在一个列表框中。 问题是我希望它以字母升序的方式准确排序(具体来说是葡萄牙语)。

这些条目,例如:

测试版 阿里达 安娜

应按以下顺序订购:

安娜 阿里达 测试版

但由于它以某种 ASCII 顺序进行排序,因此“重音”字符将被抛出到末尾,而不是它们对应的字母的正下方。

结果: 安娜 贝塔 阿里达

我该如何解决这个问题?编辑:我的意思是用 Java 本身解决问题,而不是用 SQlite 改进

提前致谢。

【问题讨论】:

    标签: java internationalization collation diacritics


    【解决方案1】:

    java.text.Collator 传递给您的字符串排序例程。

    【讨论】:

      【解决方案2】:

      您可以先将名称读入常规List<String>,然后使用Collections.sort() 对列表进行排序。要指定区分区域设置的顺序,请使用Collator

      例如

      List<String> names = ... read names from db;
      Collator collator = Collator.getInstance(new Locale("pt"));
      Collections.sort(names, collator);
      

      然后将按字母顺序对名称进行排序。您可能需要使用 collat​​or.setStrength(SECONDARY) 让它“忽略”由于重音引起的差异。这种行为是特定于语言的,所以我不能确定。

      【讨论】:

        猜你喜欢
        • 2017-01-27
        • 1970-01-01
        • 2018-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多