0

我是红宝石初学者,对这段代码非常沮丧:

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

不知何故,第二个比较不被红宝石识别!怎么了?

4

3 回答 3

7

我认为你应该使用f[-4..-1]而不是f[-4..-5].

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

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

或使用String#end_with?

unless f.end_with?('.png', '.jpg')
于 2013-07-27T16:49:48.927 回答
4

f[-4..-5]将是一个空字符串,它永远不会匹配'.png'. 所以你的析取的第二个术语永远不会被评估。

如果您通过文件扩展名进行调节,那么您可以这样做:

case File.extname(f)
when ".png", ".jpg"
else
  ...
end
于 2013-07-27T16:49:04.850 回答
0

下面如何:

ext_nm = File.extname(f)
unless [".png", ".jpg"].include? ext_nm
于 2013-07-27T17:11:38.137 回答