Традиционная испанская сортировка строк в Java

101
9

Я конвертирую.NET-приложение в Java. Приложение читает файл в таком формате:

es-MX
jueves
verde
amarillo
blanco
llave
llover
loma
cinco
domingo
rojo

но мне трудно понять, как сортировать испанский язык в соответствии с традиционной сортировкой слов. В VB.NET вы увидите следующее:

 Dim spainCultureTraditional As CultureInfo = New CultureInfo(&H40A)

но я не могу найти эквивалентную традиционную локацию сортировки в Java. Единственное различие между ними состоит в том, что в es-MX/es-ES llave и llover будут переключаться по сравнению с международной сортировкой.

Примечание: языковой стандарт es-ES не обязательно является одним и тем же в Java, и это не то же самое в VB.NET.

спросил(а) 2016-04-30T00:27:00+03:00 4 года, 2 месяца назад
1
Решение
67

Вам могут потребоваться индивидуальные правила сортировки. Здесь есть демо-версия для трандиментарного испанца:

https://docs.oracle.com/javase/tutorial/i18n/text/rule.html

Сводный код:

String smallnTilde = "\u00F1";
String capitalNTilde = "\u00D1";

String traditionalSpanishRules = (
"< a,A < b,B < c,C " +
"< ch, cH, Ch, CH " +
"< d,D < e,E < f,F " +
"< g,G < h,H < i,I < j,J < k,K < l,L " +
"< ll, lL, Ll, LL " +
"< m,M < n,N " +
"< " + smallnTilde + "," + capitalNTilde + " " +
"< o,O < p,P < q,Q < r,R " +
"< s,S < t,T < u,U < v,V < w,W < x,X " +
"< y,Y < z,Z");

RuleBasedCollator spCollator = new RuleBasedCollator(traditionalSpanishRules);

Collections.sort(words, spCollator);
System.out.println(words);

ответил(а) 2016-04-30T00:39:00+03:00 4 года, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема