Reputation: 2526
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
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