Простая проверка пятизначного почтового индекса с помощью Regex - PullRequest
1 голос
/ 29 сентября 2019

Я пишу программу, которая позволяет пользователю вводить пятизначный почтовый индекс, чтобы получить список местных кинотеатров и их списки.Позже я собираю информацию в программе для заполнения объектов театра и кино.Со временем я найду способ сохранить все эти данные.Но в этот момент в моем файле CLI я хочу, чтобы пользователь ввел либо пятизначный почтовый индекс, либо слово exit.Вот код на данный момент ...

def program_input
  input = gets
  if input.chomp == "exit"
    puts "Enjoy your movie!"
  elsif input.chomp == #five digit zipcode validator
    sleep(0.5)
    print "Calculating"
    sleep(0.25)
    print "."
    sleep(0.25)
    print "."
    sleep(0.25)
    print "."
    zip_code = input.chomp
    scraper = Scraper.new(zip_code)
  end
end

Что мне нужно, это строка оператора elsif.Я хочу использовать regex или что-то еще, чтобы подтвердить, что ввод представляет собой пятизначное число, например, почтовый индекс.Я не хочу использовать внешний драгоценный камень и не хочу проверять список всех пятизначных почтовых индексов.

Я думал о том, чтобы подтвердить, что число находится в диапазоне от 00001 до 99999. Или посмотрите список почтовых индексов и найдите тот, который имеет наименьшее число, и почтовый индекс, который численно выше, и принять всечисла в этом диапазоне, но я понимаю, что будет множество пробелов чисел, которые соответствуют этой логике, фактически не являясь действительным почтовым индексом.

По сути, я хочу, чтобы программа закрывалась, если пользователь вводит команду.Я собираюсь добавить туда оператор нижнего регистра, чтобы обезглавить любые буквы, прежде чем проверять, является ли это «выходом» в нижнем регистре.Но если пользователь вводит действительный пятизначный почтовый индекс, я бы хотел, чтобы он продолжил работу с программой .... Как ввести этот почтовый индекс в URL-адрес, а затем скопировать этот URL-адрес для получения информации, необходимой программе перед созданием театраи объекты фильма и возвращение этой информации пользователю.Я не показывал эту часть кода, потому что он уже написан и работает, когда в строку scraper передается 5-значный почтовый индекс.

Любая помощь будет принята с благодарностью.Заранее спасибо!:)

1 Ответ

6 голосов
/ 29 сентября 2019

Я предлагаю вам использовать case statement здесь, потому что он использует методы === для определения совпадений.

response = gets.chomp

case response
when "exit"
  puts "Enjoy your movie!"
when /\A\d{5}\z/
  # process zip code given by response
else
  # ?
end

Примечание /\A\d{5}\z/ === "01234" #=> true.См. Regexp # === .Регулярное выражение гласит: «соответствует началу строки (\A), за которым следуют пять цифр (\d{5}), за которыми следует конец строки (\z).

when "exit"можно заменить, например, /\A[Ee]xit\z/, если желательно, чтобы ответ "Exit" имел тот же эффект, что и "exit".

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