NoMethodError: undefined method `match?' for "Ruby":String
NoMethodError: undefined method `match?' for "Ruby":String
我正在尝试检查用户的输入是否与 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 中不起作用?
String#match?
and Regexp#match?
are Ruby 2.4 new methods. Check here and here.
这个新语法不仅仅是一个别名。它比其他方法快主要是因为它不更新 $~
全局对象。根据 this 基准测试,它的运行速度比其他方法快 三倍。
顺便说一句,为了实现您的目标(检查字符串是否与正则表达式匹配),您可以 [1] 更新您的 ruby 版本以使用这个新的功能或 [2] 使用另一种方法。
比如可以使用=~ operator,如果没有找到returns nil,或者position 比赛开始的地方。可以这样使用:
if "Ruby" =~ /R.../
puts "found"
end
我正在尝试检查用户的输入是否与 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 中不起作用?
String#match?
and Regexp#match?
are Ruby 2.4 new methods. Check here and here.
这个新语法不仅仅是一个别名。它比其他方法快主要是因为它不更新 $~
全局对象。根据 this 基准测试,它的运行速度比其他方法快 三倍。
顺便说一句,为了实现您的目标(检查字符串是否与正则表达式匹配),您可以 [1] 更新您的 ruby 版本以使用这个新的功能或 [2] 使用另一种方法。
比如可以使用=~ operator,如果没有找到returns nil,或者position 比赛开始的地方。可以这样使用:
if "Ruby" =~ /R.../
puts "found"
end