首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >整理器地区德语-如何只排序重音字母后,正常的。

整理器地区德语-如何只排序重音字母后,正常的。
EN

Stack Overflow用户
提问于 2017-05-12 06:54:22
回答 2查看 1K关注 0票数 3

我使用了排序器对一个对象数组进行排序。但我发现它像对待普通字母一样对待重音字母:

代码语言:javascript
复制
Aktivierung
Änderung
Auszahlung
Bar

相反,我想要这个

代码语言:javascript
复制
Aktivierung
Auszahlung
Änderung
Bar

重音字母应该放在普通字母后面。这也适用于o/ u/ü。

代码语言:javascript
复制
Collator collator = Collator.getInstance(Locale.GERMAN);
...
private void sortDocumentiByCategoria(final Collator collator, List<ListDocumenti> listDocumenti) {
      Collections.sort(listDocumenti, new Comparator<ListDocumenti>(){
          @Override
          public int compare(ListDocumenti arg0, ListDocumenti arg1) {
              return collator.compare(arg0.getDescrizione(), arg1.getDescrizione());
          }
      });
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-12 07:24:08

花了一段时间,但我想明白了。这就是你要的!

代码语言:javascript
复制
public static void main(String[] args) throws IOException {
    List<String> list = Arrays.asList("Änderung", "Aktivierung", "Auszahlung", "Bar");

    Collections.sort(list, createCollator());

    System.out.println(list);
}

private static RuleBasedCollator createCollator() {
    String german = "" +
                    "= '-',''' " +
                    "< A< a< ä< Ä< B,b< C,c< D,d< E,e< F,f< G,g< H,h< I,i< J,j" +
                    "< K,k< L,l< M,m< N,n< O< o< Ö< ö< P,p< Q,q< R,r< S,s< T,t" +
                    "< U< u< Ü< ü< V,v< W,w< X,x< Y,y< Z,z" +
                    "& ss=ß";

    try {
        return new RuleBasedCollator(german);
    } catch (ParseException e) {
        throw new RuntimeException(e);
    }
}

对其进行测试会产生以下结果:

代码语言:javascript
复制
>> [Aktivierung, Auszahlung, Änderung, Bar]
票数 0
EN

Stack Overflow用户

发布于 2017-05-12 07:11:14

你比你需要的要复杂得多.

Collections.sort将带来最后的价值

代码语言:javascript
复制
 List<String> l = Arrays.asList("Aktivierung", "Änderung", "Auszahlung", "Bar");
 System.out.println(l);
 Collections.sort(l);
 System.out.println(l);

Aktivierung,nderung,Auszahlung,Bar

“编辑:

根据你自己定义的德国规则实现一个校对器..。

代码语言:javascript
复制
 List<String> l = Arrays.asList("Aktivierung", "Änderung", "Auszahlung", "Bar");
 String germanRules = "< A < a < Ä < ä < O < o < Ö < ö < U < u < Ü < ü";

 RuleBasedCollator ruleBasedCollator = new RuleBasedCollator(germanRules);
 Collections.sort(l, ruleBasedCollator);
 System.out.println(l);

产出将是:

Aktivierung,Auszahlung,nderung,Bar

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43931170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档