增加由字符串和字母组成的注册号

时间:2014-02-27 19:35:57

标签: c# .net

我的问题与that question类似,但略有不同。我的注册号码为:

14AAA999:14是当前年份,每个A代表一个特征,每个9代表一个数字。 我知道如何从字符串中提取数字,但我想增加字母。以下是我想要实现的目标:

2014年注册的第一个人将拥有这个注册号:14AAA000,第二个14AAA001,......,直到14AAA999,然后它将变成14AAB000,依此类推,直到14ZZZ999。我正在寻找一种增加每次溢出字母的好方法。

感谢您的帮助!

2 个答案:

答案 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(); 
    }
}