NoMethodError: неопределенный метод `match?' для "Рубина": Строка
Я пытаюсь проверить, соответствует ли ввод пользователя RegEx [a-zA-z]
поэтому я проверил документы для правильного метода. я нашел match?
в Ruby-doc.org и скопировал пример, показанный в документах, в irb, но вместо true
Я получаю это:
2.3.3 :001 > "Ruby".match?(/R.../)
NoMethodError: undefined method `match?' for "Ruby":String
Did you mean? match
from (irb):1
from /usr/local/rvm/rubies/ruby-2.3.3/bin/irb:11:in `<main>'
Почему этот метод не работает в моем IRB?
1 ответ
String#match?
а также Regexp#match?
В Ruby 2.4 появились новые методы. Проверьте здесь и здесь.
Этот новый синтаксис не только псевдоним. Это быстрее, чем другие методы, главным образом потому, что не обновляет $~
глобальный объект. Согласно этому тесту, он работает в три раза быстрее, чем другие методы.
Кстати, чтобы достичь своей цели (проверьте, соответствует ли строка регулярному выражению), вы можете [1] обновить версию ruby, чтобы использовать эту новую функцию, или [2] использовать другой подход.
Например, вы можете использовать оператор =~, который возвращает nil, если не найден, или позицию, с которой начинается совпадение. Можно использовать так:
if "Ruby" =~ /R.../
puts "found"
end