简体   繁体   English

如何在C#中生成字母数字序列号

[英]How to generate a Alphanumeric sequence number in c#

I wrote below code for generating my 8 digit character number, increment should happen from left to right. 我写了下面的代码来生成我的8位字符数字,增量应该从左到右发生。

suppose my starting Number is ABC00001 the next increment number will be ABC00002 假设我的起始编号为ABC00001,下一个增量编号为ABC00002

number will increment up to 9 and after 9 it will change to A . 数字将增加到9,在9之后将变为A。 eg: ABC00009 -- >ABC00000A --> ABC00000B --> .... -->ABC00000Z 例如:ABC00009-> ABC00000A-> ABC00000B-> ....-> ABC00000Z

after Z it will change last second digit number as ABC0000A1 --> ABC0000A2 ... Z之后将更改最后第二个数字为ABC0000A1-> ABC0000A2 ...

 public static string GeneratedNextevcPrimakryKey()
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            string str = string.Empty;

            var maxNumber = "ONC0BJKZ";

            string splitnumber = maxNumber.Substring(3, 5);
            char[] temp = splitnumber.ToCharArray();
            //find last index number/character
            for (int i = splitnumber.Length - 1; i >= 0; i--)
            {
                if (char.IsNumber(splitnumber[i]))
                {
                    int fifthvalue = Convert.ToInt32(splitnumber[i].ToString());

                    //increment 5th digit character
                    if (fifthvalue == 9)
                    {
                        temp[i] = 'A';
                        break;
                    }
                    else
                    {
                        fifthvalue = fifthvalue + 1;
                        string f = Convert.ToString(fifthvalue);
                        temp[i] = Convert.ToChar(f);
                        //sb.Append(fifthvalue);
                        break;
                    }
                }
                else
                {
                    char letter = splitnumber[i];
                    char nextChar = new char();
                    if (letter == 'z')
                    {
                        string strvalue = Convert.ToString(1);
                        temp[i] = Convert.ToChar(strvalue);
                    }
                    else if (letter == 'Z')
                    {
                        //last digit character
                        string strvalue = Convert.ToString(1);
                        temp[i] = Convert.ToChar(strvalue);
                        str = new string(temp);

                        break;
                    }
                    else

                        nextChar = (char)(((int)letter) + 1);

                    temp[i] = nextChar;
                    str = new string(temp);
                    break;
                }


            }
            return str;
        }

You can try to implement Base36 您可以尝试实现Base36

void Main()
{
    // 17 would be the number you want to convert to your ABC format
    var result = ToBase36(17);
    Console.WriteLine(result);
    // Will print "ABC00000H"
}

private static string ToBase36(ulong value)
{
    const string base36 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var sb = new StringBuilder(9);
    do
    {
       sb.Insert(0, base36[(byte)(value % 36)]);
       value /= 36;
    } while (value != 0);

    var paddedString = "ABC" + sb.ToString().PadLeft(6, '0');
    return paddedString;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM