Сортировка массива строк по их целочисленным значениям

Допустим, у меня есть несортированный массив от 1 до 10, как показано ниже ...

a = ["3", "5", "8", "4", "1", "2", "9", "10", "7", "6"]

Если я использую метод сортировки для этого массива, он возвращает это ...

a.sort = ["1", "10", "2", "3", "4", "5", "6", "7", "8", "9"]

Как видите, 10 стоит перед 2, что неверно. Как я могу отсортировать эти числа так, чтобы 10 отображалось правильно?

РЕДАКТИРОВАТЬ: Привет, ребята, спасибо всем за ваши ответы. Я должен немного лучше объяснить свою проблему. Мне нужно отсортировать массив для прайс-листа электронной коммерции. Итак, массив выглядит следующим образом ...

a = ["0-10", "11-20", "21-30", "31-40" etc.]

Значит, строки не могут быть преобразованы в целые числа. Я должен был это поставить, когда писал вопрос. Не думал, что в фиксе будет большая разница. Моя ошибка, прошу прощения за это предположение! Как я могу отсортировать этот массив? Спасибо!

19
задан tob88 11 October 2011 в 14:40
поделиться

1 ответ

Другая опция, которая может использоваться в Вашем примере или массивах других как

a = ["teste", "test", "teste2", "tes3te", "10teste"]

:

a.sort_by! {|s| s[/\d+/].to_i}
0
ответ дан 30 November 2019 в 02:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: