Ruby中的两个比较除非

时间:2013-07-27 16:44:21

标签: ruby

我是红宝石初学者,对此代码感到非常沮丧:

unless ((f[-4..-5] == '.png') || (f[-4..-5] == '.jpg'))

不知何故,红宝石无法识别第二次比较!怎么了?

3 个答案:

答案 0 :(得分:7)

我认为您应该使用f[-4..-1]代替f[-4..-5]

或者您可以使用正则表达式:

unless f =~ /\.(png|jpg)$/

或使用String#end_with?

unless f.end_with?('.png', '.jpg')

答案 1 :(得分:4)

f[-4..-5]将是一个空字符串,永远不会匹配'.png'。因此,你的分离的第二个任期永远不会被评估。

如果您要通过文件扩展名进行调节,则可以执行以下操作:

case File.extname(f)
when ".png", ".jpg"
else
  ...
end

答案 2 :(得分:0)

如何:

ext_nm = File.extname(f)
unless [".png", ".jpg"].include? ext_nm