ファイル名のソート(数値)

こんにちは

フォルダに格納されているファイル名を取得して並び替えを行いたいのですが
期待する動きにならないため、ご教示お願いいたします。

【期待する動き】
桁数の違う数値を降順に並び替えたい
※一部、数値以外の文字列が含まれる。
こちらは、順不同です。

【ファイル名の取得】
Filename = System.IO.Directory.GetFiles(フォルダ名, “.xls”)

【フォルダに格納されているファイル】
A1-1.xlsx
A1-20.xlsx
A1-120.xlsx
A1-120BB.xlsx

【実行結果】
A1-20.xlsx
A1-120BB.xlsx
A1-120.xlsx
A1-1.xlsx

【期待する実行結果】
A1-120BB.xlsx
A1-120.xlsx
A1-20.xlsx
A1-1.xlsx

または
A1-120.xlsx
A1-120BB.xlsx
A1-20.xlsx
A1-1.xlsx

よろしくお願いいたします。

こんにちは

一例として、少し長いですが以下のような感じで可能かと思います。

Filename = Filename.OrderByDescending(Function(f) Int32.Parse(System.TExt.RegularExpressions.Regex.Match(System.IO.Path.GetFileNameWithoutExtension(f),"(?<=-)\d+").Value)).ToArray()
1 Like

Yoichiさん

問題なく期待通りの動きになりました。
いつもご教示いただきありがとうございます!

2 Likes

本当にすごいですよね!覚えなきゃ(^^♪

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.