Я не могу найти какой-либо существующий Collator для датского языка;встроенный для датского языка должен быть правильным.Я не уверен, что ваше предположение о том, что ae
должно быть отсортировано с æ
, верно, в частности, из-за определенных иностранных слов (например, "aerofobi" ) на датском языке (хотя я не говорящий на датском языке, хотяЯ говорю по-шведски).
Но, если вы хотите отсортировать их вместе, кажется, что у вас есть два способа сделать это, в зависимости от того, в каком контексте вы находитесь. В определенных контекстах, просто заменяя символыможет быть уместным:
String str = "USA lover graekenland støtte";
String sortStr = str.replace("ae", "æ");
Другой, возможно, лучший, вариант, который вы указали;используя RuleBasedCollator
.Используя пример из javadocs, это довольно тривиально:
String danish = "< 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" +
"< \u00E6 = ae," + // Latin letter ae
" \u00C6 = AE " + // Latin letter AE
"< \u00F8, \u00D8" + // Latin letter o & O with stroke
"< \u00E5 = a\u030A," + // Latin letter a with ring above
" \u00C5 = A\u030A;" + // Latin letter A with ring above
" aa, AA";
RuleBasedCollator danishCollator = new RuleBasedCollator(danish);
, который вы затем можете использовать:
String test1 = "USA lover Grækenland støtte";
String test2 = "USA lover Graekenland støtte"; // note capital 'G'
boolean result = danishCollator.equals(test1, test2); // true
Если вы считаете, что по умолчанию сортировщик неверен, вы можете захотеть сообщить об ошибке .(Ранее было подобных ошибок ).
Обновление: Я проверил это с помощью печатной энциклопедии на датском языке.Действительно, есть слова, которые начинаются с 'ae' (в основном это слова из иностранных языков; например, "аэробика"), которые не отсортированы с (и, следовательно, не равны) слову, начинающемуся с 'æ'.Поэтому, хотя я понимаю, почему вы хотели бы относиться к ним как к равным во многих обстоятельствах, они не совсем такие.