Сортировать массив по наибольшему значению, вычисленному из содержимого - PullRequest
4 голосов
/ 01 февраля 2012

У меня есть такой массив строк:

["Brazil (62)", "PalestTerritoryOccupied (6)", "Македония (2)", "Германия (6)"]

Я хочу отсортировать их по наибольшему значению, но это поставило меня в тупик.Я пробовал все виды странных, замечательных (и бесполезных) вещей, таких как:

cont.sort! { |it| it.scan(/\d+/).to_s.to_i}

1 Ответ

6 голосов
/ 01 февраля 2012
sort_by {|e| e[/\d+/].to_i }.reverse

должен сделать свое дело.Вы можете написать это более эффективным и элегантным способом (см. Комментарии), как показано ниже:

sort_by {|e| -e[/\d+/].to_i }

Обратите внимание на -.

Используя сортировку, вы можете сделать:

sort {|a, b| b[/\d+/].to_i <=> a[/\d+/].to_i }

РЕДАКТИРОВАТЬ

Строка # [] была предложена в комментариях.

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