Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何生成包含字母和数字的增量动态代码_C# - Fatal编程技术网

C# 如何生成包含字母和数字的增量动态代码

C# 如何生成包含字母和数字的增量动态代码,c#,C#,我的初始代码是'A0AA',我需要一个C#中的代码/函数,它将递增它,直到它变为'Z9ZZ' 比如说。 第一个代码是“D9ZZ” 下一个代码应该是“E0AA” 对不起,也许我的例子很混乱。。这是另一个例子。。谢谢 第一个代码是“D9AZ” 下一个代码应该是“D9BA”这应该可以修复它 string start = "A9ZZ"; int add = 1; string next = String.Concat(start.Reverse().Select((x,i) => {

我的初始代码是'A0AA',我需要一个C#中的代码/函数,它将递增它,直到它变为'Z9ZZ'

比如说。 第一个代码是“D9ZZ” 下一个代码应该是“E0AA”

对不起,也许我的例子很混乱。。这是另一个例子。。谢谢 第一个代码是“D9AZ” 下一个代码应该是“D9BA”

这应该可以修复它

 string start = "A9ZZ";

 int add = 1;
 string next = String.Concat(start.Reverse().Select((x,i) =>
 {
      char first = i == 2 ? '0' : 'A';
      char last  = i == 2 ? '9' : 'Z';

      if ((x += (char)add) > last)
      {
          return first;
      }
      else
      {
          add = 0;
          return x;
      }
 })
 .Reverse());
private static IEnumerable<string> Increment(string value)
{
    if (value.Length != 4)
        throw new ArgumentException();

    char[] next = value.ToCharArray();
    while (new string(next) != "Z9ZZ")
    {
        next[3]++;
        if (next[3] > 'Z')
        {
            next[3] = 'A';
            next[2]++;
        }
        if (next[2] > 'Z')
        {
            next[2] = 'A';
            next[1]++;
        }
        if (next[1] > '9')
        {
            next[1] = '0';
            next[0]++;
        }
        yield return new string(next);
    }
}
私有静态IEnumerable增量(字符串值)
{
如果(value.Length!=4)
抛出新ArgumentException();
char[]next=value.ToCharArray();
while(新字符串(下一个)!=“Z9ZZ”)
{
下一步[3]+;
如果(下一个[3]>“Z”)
{
下一步[3]=“A”;
下一步[2]++;
}
如果(下一个[2]>“Z”)
{
next[2]=“A”;
下一步[1]+;
}
如果(下一个[1]>'9')
{
下一步[1]=“0”;
下一步[0]++;
}
返回新字符串(下一个);
}
}
调用此代码的示例:

IList<string> values = Increment("A0AA").Take(100).ToList();
foreach (var value in values)
{
    Console.Write(value + " ");
}
IList值=增量(“A0AA”).Take(100).ToList();
foreach(值中的var值)
{
Console.Write(值+“”);
}

这里有一个非常干净的解决方案,可以检查从末尾开始的每个字符:

public SomeMethod()
{
    var next = Increment("A2CZ"); // A2DZ
}

public string Increment(string code)
{
    var arr = code.ToCharArray();

    for (var i = arr.Length - 1; i >= 0; i--)
    {
        var c = arr[i];
        if (c == 90 || c == 57)
            continue;

        arr[i]++;
        return new string(arr);
    }

    return code;
}

具体一点。您的代码大小、强制数字的数量等是否有任何规格。请注意,这基本上是一个4位数的36进制计数器。。。假设第二个数字是字母数字,而不仅仅是给定示例中的数字。谢谢^ ^它起作用了。。呵呵。。对不起,我太懒了,还问你们。。非常感谢:)