質問: textfile_001.txt のような数字3桁の連番を含んだファイル名を生成したいです。 単に連番を生成するのではなく、作成先のフォルダ内を検索して同じパターンのファイル名があったら連番の最大値+1でファイル名を生成したい。 たとえば、フォルダが空の時は、`textfile_001.txt` フォルダに > > textfile_001.txt > > textfile_002.txt > > > がある時は、`textfile_003.txt` フォルダに > > textfile_001.txt > > datafile_002.dat > > > がある時は、`textfile_002.txt`(datafile_002.dat はファイル名のパターンが違うので無視) という感じです。 どのようにコーディングすればよいでしょうか。
回答: 以下の様にすればファイルが存在すれば最後のファイル名が得られ 存在しない場合は指定したファイル名部分_000.txt`が得られるので、 後はそれをインクリメントすればいいです。 ``` using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; public class Sample { public static void Main() { DirectoryInfo di = new DirectoryInfo(Environment.CurrentDirectory); string tagName = "textfile"; string file = di.GetFiles(tagName + "_???.txt") .Where(x => Regex.Match(x.Name, tagName + "_\\d{3}").Success) .OrderByDescending(x => x.Name) .Select(x => x.Name) .FirstOrDefault(); if(file == null) file = tagName + "_000.txt"; Console.WriteLine(file);//最大番号のファイル、存在しない場合は000番 } } ```