Как проверить, имеет ли строка в нем хотя бы одно число с помощью Ruby?
Мне нужно проверить, содержит ли строка в нем хотя бы одно число с помощью Ruby (и я предполагаю какое-то регулярное выражение?).
Как мне это сделать?
Ответы
Ответ 1
В качестве аргумента вы можете использовать метод String
class =~
с regex /\d/
.
Вот пример:
s = 'abc123'
if s =~ /\d/ # Calling String =~ method.
puts "The String #{s} has a number in it."
else
puts "The String #{s} does not have a number in it."
end
Ответ 2
Альтернативно, без использования регулярного выражения:
def has_digits?(str)
str.count("0-9") > 0
end
Ответ 3
if /\d/.match( theStringImChecking ) then
#yep, there a number in the string
end
Ответ 4
Вместо того, чтобы использовать что-то вроде "s = ~/\ d/", я иду на более короткий s [/\ d/], который возвращает nil для промаха (AKA false в условном тесте) или индекс хита (AKA истинно в условном тесте). Если вам нужно использовать фактическое значение s [/(\ d)/, 1]
Все должно работать одинаково, и в основном это выбор программиста.
Ответ 5
!s[/\d/].nil?
Может быть автономной функцией -
def has_digits?(s)
return !s[/\d/].nil?
end
или... добавление его в класс String делает его еще более удобным -
class String
def has_digits?
return !self[/\d/].nil?
end
end