如何制作包含字母和数字的增量动态代码
本文关键字:动态 代码 数字 何制作 包含字 | 更新日期: 2023-09-27 17:50:40
我的初始代码是'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);
}
}
调用该代码的示例:
IList<string> values = Increment("A0AA").Take(100).ToList();
foreach (var value in values)
{
Console.Write(value + " ");
}
这里有一个非常干净的解决方案,检查从末尾开始的每个字符:
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;
}