Сортировать числа с двоеточиями - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть список библейских стихов, времени или некоторых других строк с числами и двоеточиями.Я хотел бы, чтобы отсортированные по этому:

1:5
2:1
2:8
2:14
11:36

Как бы отсортировать эти числа?

Я предполагаю, что мне нужно проанализировать строку, разделить на двоеточие, а затем отсортировать.То, что я пробовал, дает мне такие вещи:

1:5
11:36
2:1
2:14
2:8

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018
arr = %w| 1:5 11:36 2:1 2:14 2:8 |
  #=> ["1:5", "11:36", "2:1", "2:14", "2:8"]

arr.sort_by { |s| Gem::Version.new(s.tr(':', '.')) }
  #=> ["1:5", "2:1", "2:8", "2:14", "11:36"]

См. Enumerable # sort_by , String # tr и Gem :: Version :: new .Последний является частью стандартной библиотеки Ruby.

0 голосов
/ 24 декабря 2018

Используйте Enumerable#sort_by

input = %w|1:5 11:36 2:1 2:14 2:8|
input.sort_by { |e| e.split(':').map(&:to_i) }
#⇒ ["1:5", "2:1", "2:8", "2:14", "11:36"]

map(&:to_i) часть, необходимая для создания целых чисел из строк, потому что 11 > 2 но "11" < "2".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...