我的问题与that question类似,但略有不同。我的注册号码为:
14AAA999:14是当前年份,每个A代表一个特征,每个9代表一个数字。 我知道如何从字符串中提取数字,但我想增加字母。以下是我想要实现的目标:
2014年注册的第一个人将拥有这个注册号:14AAA000,第二个14AAA001,......,直到14AAA999,然后它将变成14AAB000,依此类推,直到14ZZZ999。我正在寻找一种增加每次溢出字母的好方法。
感谢您的帮助!
答案 0 :(得分:1)
的伪代码:
char[] minValues { "14AAA000" }
char[] maxValues { "99ZZZ999" }
int index = input.Length - 1;
do
{
if (input[index] < maxValues[index])
{
input[index]++;
for (int j = index + 1; j < input.Length)
input[j] := minValues[j];
break;
}
else
index--;
} while (true);
答案 1 :(得分:1)
在您的情况下,您有一个数字,它是两个独立的基础。对于前3个数字,您在下一个基数为26的基数为10,其中A = 0.您可以简单地创建一个数字转换,从您的表示转换为其他。这与ISE解决方案略有不同。
class foo
{
public static string ToRep(int Year,int Num)
{
StringBuilder SB = new StringBuilder(Year.ToString());
SB.Append(":");
int DecPart = Num % 1000;
int Base26Part = Num / 1000;
for(int x = 0 ; x < 3 ; x++)
{
char NewChar =(char)( 'A'+ Base26Part % 26);
Base26Part /= 26;
SB.Insert(3,NewChar);
}
SB.Append(DecPart.ToString("000"));
return SB.ToString();
}
}