#ruby
#ruby
Вопрос:
Допустим, мне нужна некоторая информация от пользователя, поэтому я использую license_plate = gets.chomp
, чтобы пользователь вводил
01ABC222
или
01 ABC 222
или
01abc222
или
01 abc 222
.
Я хочу записать эти номерные знаки в a .yml-файл. Я знаю часть записи, но мне нужны все таблички в 01 ABC 222
формате. Как я могу преобразовать данную строку в то, что я хочу?
Комментарии:
1.
scan(/d |D /).map(amp;:upcase).map(amp;:strip).join(' ')
(плюс-минус; непроверенный)2. Вы даже можете избежать
strip
, если вы это сделаете/d |[^sd] /
…
Ответ №1:
license_plate.upcase.gsub(/[0-9][A-Z]|[A-Z][0-9]/){|split_these| split_these.insert(1, " ")}
/[0-9][A-Z]|[A-Z][0-9]/
является регулярным выражением. Он ищет шаблон в строке. В этом случае он ищет цифру ( [0-9]
), за которой непосредственно следует буква ( [A-Z]
), или ( |
) букву, за которой непосредственно следует цифра. Если он находит такой шаблон, тогда блок вставляет пробел посередине (с индексом 1).