2014-09-26 99 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