gpt4 book ai didi

java - 对包含非西方字符的字符串进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 10:13:46 24 4
gpt4 key购买 nike

我想打印所有可用语言的排序波兰语名称。

import java.util.*;

public class Tmp
{
public static void main(String... args)
{
Locale.setDefault(new Locale("pl","PL"));
Locale[] locales = Locale.getAvailableLocales();
ArrayList<String> langs = new ArrayList<String>();
for(Locale loc: locales) {
String lng = loc.getDisplayLanguage();
if(!lng.trim().equals("") && ! langs.contains(lng)){
langs.add(lng);
}
}
Collections.sort(langs);
for(String str: langs){
System.out.println(str);
}
}
}

不幸的是,我对排序部分有疑问。输出为:

:
:
kataloński
koreański
litewski
macedoński
:
:
węgierski
włoski
łotewski

不幸的是,在波兰语中,ł 出现在 l 之后和 m 之前,因此输出应该是:

:
:
kataloński
koreański
litewski
łotewski
macedoński
:
:
węgierski
włoski

我怎样才能做到这一点?是否有一种通用的不依赖于语言的方法(假设我现在想显示它并使用另一种排序规则以另一种语言进行排序)。

最佳答案

尝试

Collections.sort(langs, Collator.getInstance(new Locale("pl", "PL")));

它将产生

...
litewski
łotewski
...

有关详细信息,请参阅 Collat​​or API

关于java - 对包含非西方字符的字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51983536/

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