RoR:处理空白和/或特殊字符

时间:2014-11-05 15:07:37

标签: ruby-on-rails ruby regex

我正在处理要上传的电子邮件,偶尔电子邮件中的嵌入图片可能没有文件扩展名,也没有包含字母,数字和特殊字符的随机组合的扩展程序(例如: image001 .gif注意@ 01CFA02B.47556390 )。如果任何一个实例到达,我想忽略它并继续前进。我认为我已经覆盖了无扩展,但是不清楚如何最好地处理随机字符以及编写条件的最干净的方法。以下是我到目前为止的情况:

 filename_extension = File.extname(filename)

if filename_extension.blank?
              puts "FILENAME EXT IS BLANK"
    elsif filename_extension #NEED REGEX or something to handle Random?
            puts "FILENAME EXT IS Random"
          else #DO PROCESSING

感谢。

1 个答案:

答案 0 :(得分:0)

known_extensions = %w[.csv .rb .rbw .html .htm .css]
filenames = %w[1.txt 2.csv 3]
filenames.each do |filename|
  filename_extension = File.extname(filename)

  if filename_extension.empty?
    puts "FILENAME EXT IS BLANK"
  elsif known_extensions.include? filename_extension
    puts "FILENAME EXT IS Random"
  else #DO PROCESSING
    puts "Processing"
  end
end

问题被标记为ruby,但没有任何可能为您提供blank?方法的宝石。

无效的想法&#39;扩展是多种多样的,当然与有效的文件名有关。例如,在大多数Unix文件系统上,文件名的唯一限制是文件名大小限制为255个字节,保留字符为/null。事实上,我没有关于&#39;扩展&#39;在Unix中,因为它们只是文件名的一部分,文件名中的句点有效,并不代表任何特殊的。 (除了以句点开头的文件名,表示它应该是一个“隐藏的”文件。)在Windows系统上,它是一个较长的字符列表,其中一些是{{1以及单引号和双引号。在我的Commodore上,我认为它是/ : < > ? \ | + , . ; = [ ]:,,在我的Amiga系统上我可以使用除="之外的任何内容,或者:

所以我觉得&#39;无效&#39;扩展可能比“有效”更容易匹配。那些。如果您确实在使用Rails并在Unix上托管,那么您需要检查一小部分内容,以确保有效的扩展名(实际上是有效的文件名)。基于您的托管系统上的无效扩展名,以及由于您了解有效扩展程序对您的程序意味着什么而将放置的任何限制。