どこかのだれかへ

ボク、プログラマ。

名前の末尾の数字をカウントアップして返すメソッド

ツールとかで要素をコピーした時の新しい名前は、賢く末尾の数字がカウントアップしていくのが嬉しいと思うのです。

static string CountUpName( string name )
{
    Match match = Regex.Match( name, "(^.*)([0-9]+$)", RegexOptions.RightToLeft );
    if( match.Success ) {
        int digit = match.Groups[ 2 ].Value.Length;
        int value = int.Parse( match.Groups[ 2 ].Value ) + 1;

        name = match.Groups[ 1 ].Value + value.ToString( "D" + digit );
    }
    else {
        name = name + "0";
    }
    return name;
}

match.Groups[0]はマッチした全体なので、今回は使いません。

実際に使うときはこの後に名前の重複チェックして、重複してたらもう一回CountUpNameを通して~ということをやっています。

このメソッドだと「test1」「test001」とかにも対応出来るので便利です。まあ単純に内部的に変数持ってて複製の度にカウントアップさせてくでも問題ないとは思うんですけどね。