Сортировка части письма после извлечения из строки - PullRequest
0 голосов
/ 31 августа 2018

Мне прислали список названий компаний и электронные письма, отформатированные по имени (first.last@company.org), из которых я извлек электронные письма и ввел их в массив.

ary = ["Babe.Ruth@company.com", "Joe.Black@company.com", "Hannibal.Smith@company.com"]

Как я могу эффективно отсортировать электронные письма по части фамилии электронного письма (между точкой и символом @), чтобы в ней был такой список?

Joe.Black@company.org
Babe.Ruth@company.org
Hannibal.Smith@company.org

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Аналогичное решение без регулярных выражений

arr.sort_by { |s|
   s.split('@').first.split('.').last 
} 

Шаг за шагом

'Joe.Black@company.org'.split ('@') ➡ ['Joe.Black', 'company.org']

['Joe.Black', 'company.org']. First ➡ 'Joe.Black'

'Joe.Black'.split ('. ') ➡ [' Joe ',' Black ']

['Джо', 'Черный']. Последний ➡ 'Черный'

блок возвращает «черный», который будет использоваться для сортировки «Joe.Black@company.org» * 10101

статья о сортировке против sort_by

0 голосов
/ 31 августа 2018
arr.sort_by { |s| s[/(?<=\.)[^@]+/] }
  #=> ["Joe.Black@company.org", "Babe.Ruth@company.org", "Hannibal.Smith@company.org"]

(?<=\.) - позитивный взгляд. Требуется, чтобы перед матчем непосредственно предшествовал период, но этот период не является частью матча. См. Enumerable # sort_by .

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