Połącz alfabetyczny i naturalny porządek (aka. Sortowanie według użytkownika)

Wydawało mi się, że będzie to łatwe do znalezienia, ale wydaje się, że każde rozwiązanie, które mogę znaleźć w sieci, rozwiązuje tylko część problemu.

Chcę posortować listęNazwy plików (a pliki w większości zostały nazwane na cześć osób i / lub adresów), które zostały podane przez użytkowników, czasami w różnych językach (głównie niemieckim, z odrobiną francuskiego i włoskiego mieszanego tu i tam, a rzadko z żadnym innym językiem zachodnim) .

Chodzi o to, aby przedstawić tę listę uporządkowaną w sposób, który użytkownicy (niemieccy) ogólnie uznają za rozsądnych. Oznacza to, że zamówienie powinno być zgodne zjava.text.Collator dla Locale.GERMAN, ale jednocześnie oczekuje się wyjątku dla liczb w ciągu, więc „10” pojawia się po „2”.

Znalazłem kod do naturalnego sortowania w sieci, ale polega on na porównywaniu postaci po znaku (a Collator tego nie obsługuje). Mogłem zhakować coś za pomocą podciągów, ale wewnątrz komparatora nie uważa mnie za najjaśniejszy pomysł na tworzenie wielu podciągów przy każdym wywołaniu porównania.

Wszelkie pomysły, jak skutecznie to wdrożyć (zarówno w czasie realizacji, jak irealizacja czas) lub lepiej jeszcze przetestowaną i gotową do użycia implementację?

questionAnswers(2)

yourAnswerToTheQuestion