2014-09-26 71 views
-1

导致在文件名中的零我在文件名中包含一个递增值(没有前导零)文件,这是我存储在数组中,并然后对其排序验证是否有使用红宝石

contents = Dir.glob("W:/file path/*.txt").select { |f| f.include?('foo')}.sort_by{|s| s[/(?<=_)\d+/].to_i} 
的目录

文件格式是

W:/name/2014-09-02 - name/20140902-070343_1-foo.txt 
W:/name/2014-09-02 - name/20140902-070343_10-foo.txt 

我正在寻找一种方式来遍历数组以测试是否增加值已前导零。在这种情况下,测试会失败。

我应该提取文件名的一部分,我需要作为一个子字符串,并存储在一个新的数组,然后循环通过验证是否有前导零?这是否会使用正则表达式来完成,如/^00/

感谢

+3

是什么意思“应该是_001” - 你要重命名的文件? – Stefan 2014-09-26 09:47:45

+0

对不起,我删除它,因为它是误导 – user3927287 2014-09-26 10:17:10

+0

我正在查看,如果值包含前导零。如果他们没有,测试失败,如果他们做测试通过 – user3927287 2014-09-26 10:17:58

回答

2

根据您的意见,你可以简单地检查是否所有文件名有3位_后:

Dir.glob('...').all? { |x| x =~ /_\d{3}/ } 
+0

我刚刚意识到你正在使用这个正则表达式:-) – Stefan 2014-09-26 10:14:03

+0

不想添加零。我正在寻找验证值是否包含前导零。如果他们没有,测试失败,如果他们做测试通过 – user3927287 2014-09-26 10:18:33

+0

工作'零= contents.all? {| z | z =〜/ _ \ d {3} /}? 'PASS':'FAIL''=做什么? – user3927287 2014-09-26 12:54:29