我正在处理要上传的电子邮件,偶尔电子邮件中的嵌入图像会出现,要么没有文件扩展名,要么扩展名包含字母、数字和特殊字符的随机组合(例如: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
谢谢。
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?
方法。
"无效"扩展名的概念千差万别,当然,它与有效文件名的含义有关。例如,在大多数Unix文件系统上,对文件名的唯一限制是文件名大小限制为255字节,以及保留字符/
和null
。事实上,据我所知,Unix中没有关于"扩展名"的规范,因为它们只是文件名的一部分,文件名中的句点是有效的,并不表示任何特殊的东西。(除非文件名以句点开头,表示它应该是一个"隐藏"文件。)在Windows系统中,它是一个较长的字符列表,其中一些是/ : < > ? | + , . ; = [ ]
以及单引号和双引号。在我的Commodore上,我认为它是:
、,
和=
,在我的Amiga系统上,我可以使用除"
、:
或/
之外的任何东西。
所以我认为"无效"扩展名可能比"有效"扩展名更容易匹配。如果您确实在使用Rails,并在Unix上托管,那么您需要检查一小部分内容,以确保有效的扩展名(实际上是有效的文件名)。基于您的托管系统的无效扩展,以及由于您对有效扩展对您的程序意味着什么的想法而产生的任何限制。