La ordenación de una cadena con número se realiza de forma diferente de un idioma a otro. Por ejemplo, en los dígitos en inglés vienen antes las letras en una clasificación ascendente. Pero, en alemán, los dígitos son ascendentes ordenados por letras.Clasificación lingüística (alemán) con Java
traté de ordenar cadenas utilizando un Collator
de la siguiente manera:
private Collator collator = Collator.getInstance(Locale.GERMANY);
collator.compare(str1, str2)
Pero por encima de la comparación no tiene en cuenta los dígitos después de la regla letras.
¿Alguien tiene una idea de por qué Java no está tomando esta regla (dígitos después de la carta) en cuenta, por el momento estoy usando RuleBasedCollator
de la siguiente manera:
private final String sortOrder = "< 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 < 0 < 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9";
private Collator collator = new RuleBasedCollator(sortOrder);
¿Es deliberado que usted no tiene acentos y el Sharp-s (áéíóúüñ) en el orden de clasificación? Diría que son importantes para tener un colega alemán. –
sí, para el caso de prueba he omitido diéresis y caracteres especiales. solo quería mantenerlo muy simple. – Amir
También: ¿qué reglas sigues para ordenar los dígitos después de los otros caracteres? Hay varias intercalaciones diferentes para alemán y al menos algunos de esos números de clasificación primero. –