NoMethodError:未定义的方法`匹配?'对于“Ruby”:String

时间:2017-01-22 14:50:56

标签: ruby regex match nomethoderror code-documentation

我正在尝试检查来自用户的输入是否与RegEx [a-zA-z]匹配,因此我检查了文档以获取正确的方法。我在Ruby-doc.org中找到了match?,并将文档中显示的示例复制到了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 个答案:

答案 0 :(得分:13)

String#match?Regexp#match? Ruby 2.4 新方法。查看herehere

这种新语法不仅仅是别名。它比其他方法更快,主要是因为它不更新$~全局对象。根据{{​​3}}基准测试,它比其他方法的运行速度

顺便说一句,为了达到你的目标(检查字符串是否与正则表达式匹配),你可以 [1] 更新你的ruby版本以使用这个新功能或 [2] < / strong>使用其他方法。

例如,您可以使用this,如果找不到则返回 nil ,或者匹配开始的位置。可以这样使用:

if "Ruby" =~ /R.../
   puts "found"
end