Как отсортировать строки: по алфавиту, по длине и почему «10» встаёт перед «9»
Сортировка списка — задача на первый взгляд тривиальная, пока не встречаешь её классическую ловушку: строки с номерами выстраиваются как 1, 10, 11, 2, 3. Разбираемся, почему так происходит и какой режим сортировки нужен под каждую задачу.
Почему «10» встаёт перед «9»
Строки по умолчанию сортируются посимвольно, как в словаре. Символ «1» стоит раньше «9», поэтому «10» и «100» оказываются раньше «9» — алфавитная сортировка ничего не знает о числах. Для списков с номерами (пункты, артикулы, строки таблицы) нужен именно числовой режим: он читает строки как числа и выстраивает их по величине: 1, 2, 3, …, 9, 10.
Три режима, которые покрывают всё
- алфавитная — для названий, фамилий, тегов (учитывает регистр или нет — по желанию);
- числовая — для списков с числами, чтобы 10 шло после 9;
- по длине строки — удобно, когда нужно найти «странные» записи или подготовить текст к обработке от простого к сложному.
Подводный камень: регистр и пробелы
В таблице символов заглавные буквы идут раньше строчных, поэтому без настройки «Отчёт» окажется раньше «акт». Плюс невидимый пробел в конце строки сдвигает её в неожиданное место. Хороший инструмент сортировки решает обе проблемы галочками «игнорировать регистр» и «убрать лишние пробелы». Отсортировать список можно в инструменте сортировки строк — вставили текст, выбрали режим, получили результат, а галочкой «убрать дубликаты» сразу почистили список.
Сортировка строк
Сортируйте строки по алфавиту, численно, по длине или перемешивайте случайно с опцией удаления дубликатов
Рандомизатор списков / Перемешивание
Перемешайте элементы списка с помощью алгоритма Фишера-Йетса
Удаление дубликатов
Удалите повторяющиеся строки из текста с параметрами учёта регистра, обрезки пробелов и сохранения порядка