Суммирование:
- Терминология, в которой я был поиск кажется "естественным" рода".
-
Поведение в операционных системах:
- Для Windows (версия >= XP) проводник Windows использует естественные сортировки.
- Для терминалов Linux используйте "ls -v" вместо простого "ls", чтобы получить естественный сортировки.
-
Для программирования в Delphi используйте StrCmpLogicalW Windows API, чтобы получить естественный вид.
- Для программирования в Delphi и Kylix и Lazarus используйте функции, созданные вручную.
натуральный сорт:
- (1) Обертка Delphi для сравнения натуральных порядковых номеров с помощью Martin Pool.
http://irsoft.de/web/strnatcmp-and-natsort-for-delphi - (2) Коды алгоритма сортировки алфавита в других языках с сайта davekeolle.
http://www.davekoelle.com/alphanum.html - (3) Другие известные страницы:
http://www.codinghorror.com/blog/2007/12/sorting-for-humans-natural-sort-order.html
http://objectmix.com/delphi/722211-natural-sorting-optimizing-working-solution.html
http://groups.google.com/group/borland.public.delphi.language.delphi.general/browse_thread/thread/1141d49f8bbba577
http://objectmix.com/delphi/401713-alphanumeric-sort-routine-delphi.html
- (1) Обертка Delphi для сравнения натуральных порядковых номеров с помощью Martin Pool.
==========================
В проводнике Windows будут указаны следующие имена файлов, как показано ниже:
test_1_test.txt
test_2_test.txt
test_11_test.txt
test_12_test.txt
test_21_test.txt
test_22_test.txt
Если, например, я помещаю их в экземпляр TStringList и вызываю Sort, отсортированный порядок выглядит следующим образом:
test_1_test.txt
test_11_test.txt
test_12_test.txt
test_2_test.txt
test_21_test.txt
test_22_test.txt
И для записи указанные имена файлов будут упорядочены в терминале rxvt терминалов Cygwin или xterm дистрибутивов Linux, таких как CentOS, как показано ниже:
test_11_test.txt
test_12_test.txt
test_1_test.txt
test_21_test.txt
test_22_test.txt
test_2_test.txt
Не могли бы вы прокомментировать, как понять эту разницу в поведении сортировки? Кроме того, можно ли получить тот же порядок, что и в проводнике Windows? Любое предложение оценено!
PS: В моем локали Windows установлен китайский язык, но я бы подумал, что это касается английского языка.