From: James Edward Gray II Date: 2006-04-10T23:38:37+09:00 Subject: Re: Beginner array manipulation questions On Apr 10, 2006, at 9:26 AM, Jamal Mazrui wrote: > Suppose the variable path is an array of fully qualified path and file > names (e.g., in Windows, an item might be "c:\folder\file.txt"). What > would be an efficient way of creating another array that contained > only > the file extensions (one or more characters following the last . > character, if any)? I know I could use a while loop and a counter, > but > figure there is a better way in Ruby. >> files = %w{c:\folder\file1.txt c:\folder\file2.exe c:\folder \file3.pdf} => ["c:\\folder\\file1.txt", "c:\\folder\\file2.exe", "c:\ \folder\\file3.pdf"] >> files.map { |f| File.extname(f) } => [".txt", ".exe", ".pdf"] > Alternatively, how could I change the array so that it was two > dimensional where each "row" had two "columns" consisting of the full > name and the extension only? >> files.map { |f| e = File.extname(f); [f[0..(-1 - e.length)], e] } => [["c:\\folder\\file1", ".txt"], ["c:\\folder\\file2", ".exe"], ["c: \\folder\\file3", ".pdf"]] Hope that helps. James Edward Gray II