Вы можете использовать Integer(str)
и посмотреть, повысится ли оно:
def is_num?(str)
!!Integer(str, 10)
rescue ArgumentError, TypeError
false
end
Добавление: следует отметить, что хотя это возвращает true для "01"
, оно не для "09"
, просто потому, что 09
не будет действительным целочисленным литералом.
Добавление к добавлению: исправлено это путем изменения Integer(str)
на Integer(str, 10)
, согласно комментарию @ jason-axelson.