加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 04:02:49 所属栏目:百科 来源:网络整理
导读:我正在尝试检查来自用户的输入是否与RegEx [a-zA-z]匹配,所以我检查了文档以获取正确的方法.我找到了比赛?在 Ruby-doc.org并将docs中显示的示例复制到irb,但不是true我得到的是: 2.3.3 :001 "Ruby".match?(/R.../) NoMethodError: undefined method `match
我正在尝试检查来自用户的输入是否与RegEx [a-zA-z]匹配,所以我检查了文档以获取正确的方法.我找到了比赛?在 Ruby-doc.org并将docs中显示的示例复制到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中不起作用?

解决方法

String#match?Regexp#match?是Ruby 2.4的新方法.检查 here和 here.

这种新语法不仅是别名.它比其他方法更快,主要是因为它不更新$?全局对象.根据this基准测试,它的运行速度比其他方法快三倍.

顺便说一句,为了实现你的目标(检查一个字符串是否与正则表达式匹配),你可以[1]更新你的ruby版本以使用这个新功能或[2]使用另一种方法.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读