用指定的字符模式增加唯一字段

问题描述 投票:0回答:1

我正在尝试找到一种增加用户定义的意识形态的方法。我已经写了一些可以实现我想要的代码的东西,但是我非常怀疑这是做到这一点的最佳方法:

字符模式是:

AAA000AAA999BAA000BAA999BBA000

依此类推,尽管:

AAA000AAA999BAA000BAA999CAA000

可以接受。

这是我的代码,仅用于生成该模式:

int i = 30;

char char1 = 'A';
char char2 = 'A';
char char3 = 'A';
double number = 998;

for (int j = 0; j < i; j++)
{
    string id = $"{char1}{char2}{char3}{number.ToString().PadLeft(3, '0')}";

    if (number == 999)
    {
        number = 998;

        if (char1 == char2 && char1 == char3 && char1 != 'Z')
        {
            char1++;
        }
        else if (char1 > char2 && char2 != 'Z')
        {
            char2++;
        }
        else if (char3 != 'Z')
        {
            char3++;
        }
    }
    else
    {
        number++;
    }

    Console.WriteLine(id);
}

关于实现此目标的任何建议都会有很大帮助。

c# .net-core
1个回答
0
投票

我必须对您的模式进行一些假设,但据我所知,我将使用嵌套循环而不是一个循环来统治所有这些。

int n = 30;
int i = 0;

for (char char1 = 'A'; char1 <= 'Z' && i < n; char1++)
{
    for (char char2 = 'A'; char2 <= 'Z' && i < n; char2++)
    {
        for (char char3 = 'A'; char3 <= 'Z' && i < n; char3++)
        {
            for(int number = 0; number < 1000 && i < n; number++)
            {
                string id = $"{char1}{char2}{char3}{number.ToString().PadLeft(3, '0')}";
                Console.WriteLine(id);
                i++;
            }
        }
    }
}

这将:

  1. 将数字从0增加到999
  2. [此后它将Char1加1,然后再次从(1.)开始直到达到Z
  3. [之后,它将Char2加1,然后再次从(2.)开始直到达到Z
  4. [此后,它将Char3加1,然后再次从(3.)开始直到达到Z

如果达到最大值(n),它将在任何时候停止

→您将获得17575999个可能的唯一ID的最大值

© www.soinside.com 2019 - 2024. All rights reserved.