Shakeer Hussain
Shakeer Hussain

Reputation: 2526

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.

suppose my starting Number is ABC00001 the next increment number will be ABC00002

number will increment up to 9 and after 9 it will change to A . eg: ABC00009 -- >ABC00000A --> ABC00000B --> .... -->ABC00000Z

after Z it will change last second digit number as 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;
        }

Upvotes: 0

Views: 3027

Answers (1)

KSib
KSib

Reputation: 911

You can try to implement 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;
}

Upvotes: 4

Related Questions