java - 对带有重音符号等特殊字符的数组进行排序

标签 java arrays character-encoding

有人知道如何对包含重音符号等特殊字符的单词排序吗?

Arrays.sort(anArray);

'Álava' 之前返回 'Albacete',而我想要在 'Albacete' 之前返回 'Álava' .

非常感谢

最佳答案

如果您只想对字符串进行排序,就好像它们没有重音符号一样,您可以使用以下方法:

Collections.sort(strs, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        o1 = Normalizer.normalize(o1, Normalizer.Form.NFD);
        o2 = Normalizer.normalize(o2, Normalizer.Form.NFD);
        return o1.compareTo(o2);
    }
});

相关问题:

对于更复杂的用例,您需要阅读 java.text.Collator .这是一个例子:

Collections.sort(strs, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        Collator usCollator = Collator.getInstance(Locale.US);
        return usCollator.compare(o1, o2);
    }
});

如果没有预定义的排序规则满足您的需求,您可以尝试使用 java.text.RuleBasedCollator .

关于java - 对带有重音符号等特殊字符的数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26420678/

相关文章:

java - 强制停止后关闭残留的 Selenium WebDriver 实例

Java:循环不起作用,变量初始化错误

Javascript通过递归获取子节点对象

javascript - 使用reduce组成一个累积字符串数组

Mysql 变音符号/重音不敏感的搜索和存储

java - 列表上的retainAll()会导致java中的错误

java - 如何在servlet中使用ajax请求中传递的json对象

Javascript:数组中的对象有 undefined variable ?

character-encoding - “cut and paste”如何影响字符编码,什么会出错?

php - 错误 : "Input is not proper UTF-8, indicate encoding !" using PHP's simplexml_load_string