Ruby: Как проверить, является ли строка допустимым временем? - PullRequest
6 голосов
/ 11 мая 2010

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

Большую часть времени я правильно отправляю что-то вроде «2:35» или «15:41», но в других случаях это такие вещи, как «AM» или «PM» (и без цифр) ... так что в конечном итоге я нужно игнорировать их.

Итак, как я могу проверить, являются ли данные действительными?

Ответы [ 2 ]

8 голосов
/ 11 мая 2010

Вы можете использовать Time.parse () и проверять исключение ArgumentError на недопустимое время.

Дополнительным преимуществом является то, что у вас также есть время в удобном для работы формате, если оно действительно!

7 голосов
/ 11 мая 2010

Вы точно не указали, какое время вы считаете правильным (например, должны ли вы принимать необязательные секунды), поэтому вот одно предположение:

data =~ /^([01]?[0-9]|2[0-3])\:[0-5][0-9]$/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...