【C#】strNumの形で一意な識別子の文字列

背景

文字列のidで重複があった場合文字列+数値の形で重複を避けたい。

コード(C#)


using System;
using System.Linq;
using System.Text.RegularExpressions;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var TAIL_NUMBER = "([0-9]+$)"; // 末尾が数字のパターン
        var list = new List<string>(){"A", "AB", "A1", "AB1", "A3", "A4"};
        var target = "A2";
        var targetNoTailNumber = RemoveTailNumber(target, TAIL_NUMBER);
        var matchList = list.Where(i => Regex.IsMatch(i, targetNoTailNumber + TAIL_NUMBER));
        
        var max = 0;
        if (matchList.Any())
        {
            max = matchList.Max(i => Int32.Parse(Regex.Match(i, targetNoTailNumber + TAIL_NUMBER).Groups[1].Value));
        }
        var newTarget = targetNoTailNumber + (++max);
    }
    
    static string RemoveTailNumber(string str, string pattern)
    {
        var regex = Regex.Match(str, pattern);
        if (!regex.Success) return str;
        return str.Replace(regex.Groups[1].Value, "");
    }
}