Как проверить, есть ли в строке хотя бы одно число, используя Ruby? - PullRequest
14 голосов
/ 08 февраля 2010

Мне нужно проверить, содержит ли строка хотя бы одно число, используя Ruby (и я предполагаю, что это регулярное выражение?).

Как бы я это сделал?

Ответы [ 5 ]

35 голосов
/ 09 февраля 2010

Вы можете использовать метод =~ класса String с регулярным выражением /\d/ в качестве аргумента.

Вот пример:

s = 'abc123'

if s =~ /\d/         # Calling String's =~ method.
  puts "The String #{s} has a number in it."
else
  puts "The String #{s} does not have a number in it."
end
7 голосов
/ 09 февраля 2010

В качестве альтернативы, без использования регулярного выражения:

def has_digits?(str)
  str.count("0-9") > 0
end
5 голосов
/ 08 февраля 2010
if /\d/.match( theStringImChecking ) then
   #yep, there's a number in the string
end
2 голосов
/ 10 февраля 2010

Вместо того, чтобы использовать что-то вроде «s = ~ / \ d /», я выбираю более короткий s [/ \ d /], который возвращает ноль за промах (AKA false в условном тесте) или индекс попадания (АКА верно в условном тесте). Если вам нужно фактическое значение, используйте s [/ (\ d) /, 1]

Все должно работать одинаково и в значительной степени выбирается программистом.

1 голос
/ 10 декабря 2014
!s[/\d/].nil?

Может быть автономной функцией -

def has_digits?(s)
  return !s[/\d/].nil?
end

или ... добавление его в класс String делает его еще более удобным -

class String
  def has_digits?
    return !self[/\d/].nil?
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...