1

前任。如果我创建了一个文件夹名称为 IMG10001 的文件夹,但它已经存在于目标目录中。下面的代码会将文件夹名称设为 IMG10001-1,但如果目标目录中已存在 IMG10001,我希望将文件夹名称增加到 IMG10002。

string destinDir = dirPath + "\\" + this.Batch.BatchName;
int x = 0;
if (Directory.Exists(destinDir))
{
    do
    {
        x++;
        destinDir = dirPath + "\\" + this.Batch.BatchName + "-" + x.ToString();
    } while (Directory.Exists(destinDir));
}    
System.IO.Directory.Move(root,destinDir);
4

3 回答 3

2
//regular expression will work
Regex reg = new Regex("IMG(\\d+)$");
Match m = reg.match(this.Batch.BatchName);
int num = 10001;
if(m.success){
    int.tryParse(m.Groups[1].value,out num);
}
Return string.format("IMG{0}",num);

我只是在输入框里写了这些代码,没试过。但我认为它应该工作

于 2012-12-13T04:16:49.680 回答
1

假设 BatchName 始终以“IMG”开头,您可以将数字从文件中拆分出来。为确保您获得最高编号,请遍历所有文件并存储找到的最高编号。

找到最高数字后,将其增加 1 并重建文件名(“IMG”+ newNumber)。

于 2012-12-13T04:10:02.780 回答
1

您可以使用从字符串中提取整数部分Regex并将其递增为

string YourString = "IMG10001";
int IntegerPart = Convert.ToInt16(Regex.Match(s, "\\d+").ToString());
IntegerPart++;
于 2012-12-13T04:14:17.073 回答