0

私は一意の名前を処理し、データベースに保存する必要があります -

名前が既に存在する場合は、名前に追加できる最小の番号を見つけて、一意の名前として保存します。

例: ユーザー名 Scott が既に存在する場合は、Scott(1) として保存します。Scott(1) が既に存在する場合は、Scott(2) として保存します。等。

私はC#とSQLサーバー2010を使用しています

素晴らしいアイデアはありますか?

4

1 に答える 1

0

それを理解しました-しかし、改善に感謝します

            var seprator = "scott";

        var list = new List<string>();

        list.Add("scott");
        list.Add("scott(1)");
        list.Add("scott Alex");
        list.Add("scott (4)");
        list.Add("scott(xxx)");
        list.Add("scott(250)");
        list.Add("scott(12s)");
        list.Add("scott(123)x");
        list.Add("Scott caps");
        list.Add("Alex Scott caps");
        list.Add("xxxscottmmm");


        var numberList = new List<int>();

        foreach (var v in list)
        {
            var parts = Regex.Split(v, seprator, RegexOptions.IgnoreCase);

            if (parts.Length > 1)  //(1) Alex (4) (xxx) (250) (12s) (123)x caps caps 
            {
                var secondPart = parts[1].Trim();

                if (secondPart.StartsWith("(") && secondPart.EndsWith(")"))  // (1) (4) (xxx) (250) (12s)
                {
                    var valuebetweenbraces = secondPart.Substring(1, secondPart.Length - 2);  //1 4 xxx 250 12s 

                    int number;
                    var isNumber = int.TryParse(valuebetweenbraces, out number);

                    if (isNumber)
                    {
                        numberList.Add(number);
                    }
                }
            }
        }

        int maxValue = 0;

                    if (numberList.Count > 0)
                        maxValue = numberList.Max() + 1;
                    else
                        maxValue = maxValue + 1;
                       Response.Write(seprator + "(" + maxValue  + ")");
于 2013-10-23T09:07:19.457 に答える