背景
文字列の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, "");
}
}