Допустим, у меня есть несортированный массив от 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.]
Значит, строки не могут быть преобразованы в целые числа. Я должен был это поставить, когда писал вопрос. Не думал, что в фиксе будет большая разница. Моя ошибка, прошу прощения за это предположение! Как я могу отсортировать этот массив? Спасибо!
Другая опция, которая может использоваться в Вашем примере или массивах других как
a = ["teste", "test", "teste2", "tes3te", "10teste"]
:
a.sort_by! {|s| s[/\d+/].to_i}