| LINQを使用した方法になりますが、以下で実装ができます。 C#ですが、きっとVBでも。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO;
namespace ConsoleApplication2 { class Program { static void Main(string[] args) { var fileList = System.IO.Directory.GetFiles(@"適当なファイルパス", @"*.*", System.IO.SearchOption.AllDirectories);
Console.WriteLine(@"ソート前");
foreach (var filePath in fileList) { Console.WriteLine(filePath); }
Console.WriteLine(@"ソート後");
var sortFileList = fileList.OrderBy(a => System.IO.Path.GetFileName(a));
foreach (var filePath in sortFileList) { Console.WriteLine(filePath); }
Console.ReadLine(); } } }
■No63235 (SAQ さん) に返信 > 環境:VB.net2008 / Win7(64Bit) > > 初めまして、SAQです。 > 1次元配列に格納されたフルパスを与え、ファイル名の部分部分を使用してソートを行い、結果を返すモジュールを作成したいのですが、 > Array.SortはSubstring等の文字列を扱うメソッドが使用できず、どのようにすればいいか分かりません。 > どなたかご教示願います。 > > 例) > 下記のようなフルパスがString型の1次元配列に格納されている。 > C:\Folder_01\AA-001_Ver2.txt > C:\Folder_02\CC-002_Ver1.txt > C:\Folder_03\CC-003_Ver3.txt > C:\Folder_04\BB-002_Ver1.txt > C:\Folder_05\AA-001_Ver1.txt > > これを、ファイル名の数字部分 / Ver部分 / 先頭のアルファベット部分 > でソートを行い、下記の様な結果を返す。 > (フォルダの階層は様々ですが、ファイル名には規則性があります。) > > C:\Folder_05\AA-001_Ver1.txt > C:\Folder_01\AA-001_Ver2.txt > C:\Folder_04\BB-002_Ver1.txt > C:\Folder_02\CC-002_Ver1.txt > C:\Folder_03\CC-003_Ver3.txt > > > 初歩的な質問かもしれませんが、よろしくお願い致します。 > > |