这是我的代码红宝石正则表达式返回
pong = /return/.match(cap.array[0])
if pong == "return"
puts "Pong"
end
cap.array[0]
绝对匹配/return/
,你可以看到,当我用pp
:
#<MatchData "return">
但由于某些原因,if
语句不触发。任何想法,为什么它不匹配?我试图==
和===
认为它可能是一个类型问题,但没有喜悦。
这是我的代码红宝石正则表达式返回
pong = /return/.match(cap.array[0])
if pong == "return"
puts "Pong"
end
cap.array[0]
绝对匹配/return/
,你可以看到,当我用pp
:
#<MatchData "return">
但由于某些原因,if
语句不触发。任何想法,为什么它不匹配?我试图==
和===
认为它可能是一个类型问题,但没有喜悦。
Regex#match
返回MatchData
对象。因此,它与字符串的比较失败。
pong = /return/.match('i shall return this')
# cast it to string
if pong.to_s == "return"
# or do this
# if pong[0] == "return"
puts "Pong"
end
完美,非常感谢(8分钟接受)。 –
为什么两次检查?你可以做到这一点的简单方法如下图所示:
if /return/ =~ cap.array[0]
puts "pong"
end
例如:
/return/ =~ "Functions return value" #=> 14
/return/ =~ "return" #=> 0
在红宝石:
puts "hello" if 0 #=> hello # 0 is not false
这样可以尽量避免多次检查
什么是'帽.array [0]'?为什么不能优化您的代码以适应Q和A站点? – sawa
它是由数据包的PcapRub生成的数组。我不认为有必要说明它是什么,因为我知道它是匹配的。 –
你给读者带来额外的负担。你应该简单地给出一个字符串文字,或者写一些类似'some_string'的东西。这会更清楚。 – sawa