Как проверить, имеет ли строка в нем хотя бы одно число с помощью 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