0

ディレクトリ内のすべてのファイル名を取得するために ruby​​ Dir メソッドを使用しています。このような:

 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

一致する上記の文字列の一部のみを抽出しようとしています: "regionals/*.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

ありがとう

4

2 に答える 2

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"]
于 2013-07-27T15:11:41.493 に答える
1

これにより、目的の値が得られます:)

dir_files.map {|path| path[/regionals\/.*.csv/]}
#=> ["regionals/ch002.csv", "regionals/ch014.csv", "regionals/ch90.csv", "regionals/ch112.csv", "regionals/ch234.csv"]
于 2013-07-27T15:03:38.390 に答える