ファイル名の絞り込み、ソート

こんにちは

フォルダに格納されている、ファイル名がyyyyMMddHHmmss形式であるpdfファイルを取得し、
降順に並び替えを行いたいのですが、良い方法はないでしょうか?
正規表現などを使ってスマートに実装させたいと思っています。
どうかご教授お願いいたします。

【やりたいこと】
ファイル名がyyyyMMddHHmmss形式であるpdfファイルを降順に並び替えたい。

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

【フォルダに格納されているファイル】
20210907123456.pdf
20210908123456.pdf
20210909123456.pdf
20210910123456.pdf
20210910123456.xlsx
テスト.pdf

【期待する実行結果】
20210910123456.pdf
20210909123456.pdf
20210908123456.pdf
20210907123456.pdf

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

最終更新日を利用するって案はどうすか?

こんにちは

ファイル名が数値14桁固定であるなら、以下で可能かと思います。

System.IO.Directory.GetFiles(yourPath, "*.pdf").OrderByDescending(Function(f) System.IO.Path.GetFileNameWithoutExtension(f)).ToArray()
1 Like

こんにちは

すみません。
ファイル名が数値以外のものを除去する必要があるのですね。
数値14桁以外を除去するとすると以下お試しください。

System.IO.Directory.GetFiles(yourPath, "*.pdf").Where(Function(f) System.Text.RegularExpressions.Regex.IsMatch(System.IO.Path.GetFileNameWithoutExtension(f),"^\d{14}$")).OrderByDescending(Function(f) System.IO.Path.GetFileNameWithoutExtension(f)).ToArray()
1 Like

ご回答ありがとうございます。

ご教授頂いた方法で期待する結果が得られました!

本当に助かりました、ありがとうございました。

1 Like

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