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 に答える