У меня есть список файлов с кучей атрибутов. Одним из атрибутов является имя файла, в котором я хотел бы отсортировать список. Тем не менее, этот список можно продолжать что-то вроде этого: имя файл, имя файла-2, имени файла, имя файла 10 20.Есть ли метод natural_sort_by для Ruby?
Метод рубина sort_by производит это:
files = files.sort_by { |file| file.name }
=> [filename 1, filename 10, filename 2, filename 20]
Я хотел бы более удобочитаемый список, как имя файл- , filename 2, filename 10, filename 20
Я нашел драгоценный камень natural_sort, но, похоже, работает только как способ сортировки. Мне нужно что-то, где я могу указать, для чего сортировать массив.
Любая помощь?
Что означает "[1]" делать? –
[1] возвращает второй элемент массива, возвращаемый split, в этом случае - число. – Teoulas
В качестве альтернативы вы можете использовать '.last' вместо' [1] ', поэтому' files.sort_by {| f | f.name.split ("") .last.to_i} ' – William