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);
}
よくありそうなネタだし既出かもれない(´・ω・`)