字母数字计数器

use*_*673 3 c#

我正在尝试在C#中创建一个字母数字计数器,它以下列方式创建数字:

0001
0002
0003
...
9999
A000
A001
...
A999
B000
...

最后一个号码是ZZZZ.所以它首先是0-9,然后是AZ.

我很失落如何做到这一点.

Mar*_*ers 8

更新:您的评论后,我认为您的问题有误.您可能想要的只是一个简单的基础36计数器.以下是实现它的一种方法:

string base36Characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

string toBase36(int x, int digits)
{
    char[] result = new char[digits];
    for (int i = digits - 1; i >= 0; --i)
    {
        result[i] = base36Characters[x % 36];
        x /= 36;
    }
    return new string(result);
}

IEnumerable<string> base36Counter()
{
    for (int n = 0; n < 36 * 36 * 36 * 36; ++n)
    {
        yield return toBase36(n, 4);
    }
}

void Run()
{
    foreach (string s in base36Counter())
        Console.WriteLine(s);
}
Run Code Online (Sandbox Code Playgroud)

原始答案:我可能会使用yield实现它:

IEnumerable<string> magicCounter()
{
    // 0000, 0001, ..., 9999
    for (int i = 0; i < 10000; ++i)
    {
        yield return i.ToString("0000");
    }

    // A000, A001, ..., Z999
    for (char c = 'A'; c <= 'Z'; ++c)
    {
        for (int i = 0; i < 1000; ++i)
        {
            yield return c + i.ToString("000");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)