Как я могу изменить формат строки при использовании gets

#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).