LoginSignup
7
9

More than 5 years have passed since last update.

C# フォルダ作成時、同名フォルダがあれば連番を振る

Last updated at Posted at 2017-08-28

Windowsでは新しいフォルダーを作成した時、既に「新しいフォルダー」という名前のフォルダーがあれば
「新しいフォルダー (2)」というように2から連番が振られる

同じようなことをC#でやってみた

※コメントより賢いやり方を教えていただきました
 ありがとうございます(●´ω`●)

~スマートな方~

public void CreateDirectoryInSequence(string path)
{
    int i = 2;
    var targetPath = path;
    while (Directory.Exists(targetPath))
    {
        targetPath = $"{path} ({i++})";
    }
    Directory.CreateDirectory(targetPath);
}

~もともと書いてたやつ~

        /// <summary>
        /// パスを指定してディレクトリを作成する
        /// <para>既に同名ディレクトリが存在するなら連番を振る</para>
        /// </summary>
        /// <param name="path"></param>
        public void CreateDirectoryInSequence(string path)
        {
            int i = 2;
            while (Directory.Exists(path))
            {
                if (i == 2)
                {
                    path += $" ({i})";
                }
                else
                {
                    var start = path.LastIndexOf('(') + 1;
                    var count = path.LastIndexOf(')') - start;
                    int index;
                    var res = int.TryParse(path.Substring(start, count), out index);
                    if (res)
                    {
                        index++;
                        path = path.Remove(start, count);
                        path = path.Insert(start, index.ToString());
                    }
                    else
                    {
                        return;
                    }
                }
                i++;
            }
            Directory.CreateDirectory(path);
        }

よくありそうなネタだし既出かもれない(´・ω・`)

7
9
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9