2013-07-27 31 views
0

我正在使用ruby Dir方法獲取目錄中的所有文件名。就像這樣:從此ruby字符串中提取文件路徑

dir_files = Dir["/Users/AM/Desktop/07/week1/dailies/regionals/*.csv"] 

這給了我與每個元素的數組如下:

/Users/AM/Desktop/07/week1/dailies/regionals/ch002.csv 
/Users/AM/Desktop/07/week1/dailies/regionals/ch014.csv 
/Users/AM/Desktop/07/week1/dailies/regionals/ch90.csv 
/Users/AM/Desktop/07/week1/dailies/regionals/ch112.csv 
/Users/AM/Desktop/07/week1/dailies/regionals/ch234.csv 

我試着提取上述字符串的只是部分匹配:「地區性/ * CSV」

我該如何在Ruby中做到這一點?

以下沒有工作

@files_array.each do |f| 
    f = f.split("/").match(/*.csv/) 
    i = f.include?(".csv") 
    puts "#{i.inspect}" 

    #self.process_file(f[i]) 
end 

請告訴我這樣做的一個聰明的辦法?我打算將每個文件名的返回字符串傳遞給一個輔助方法進行處理。但正如你所看到的,所有的csv文件都與我執行的腳本位於不同的目錄中。 我的腳本,多數民衆贊成在執行此位於

/Users/AM/Desktop/07/week1/dailies/myScript.rb 

感謝

回答

3

這將始終回發的最終目錄和文件名,無論文件格式:

@files_array.map { |f| f.split("/")[-2..-1].join("/") } 
#=> ["regionals/ch002.csv", "regionals/ch014.csv", "regionals/ch90.csv", "regionals/ch112.csv", "regionals/ch234.csv"] 
+1

這個解決方案非常棒,因爲「區域」這個詞不是硬編碼到方法中的。只要腳本文件的相對路徑不改變,目錄名就可以是任何東西。謝謝 – banditKing

1

這給你想要的值:)

dir_files.map {|path| path[/regionals\/.*.csv/]} 
#=> ["regionals/ch002.csv", "regionals/ch014.csv", "regionals/ch90.csv", "regionals/ch112.csv", "regionals/ch234.csv"] 
+0

什麼是輸出OP正在尋找,我沒有得到。你能幫我解決嗎? :( –

+1

剛剛添加輸出,我認爲他正在尋找;) – tessi

+0

是啊!我剛纔看到.. :) –

相關問題