C# 如何生成包含字母和数字的增量动态代码
我的初始代码是'A0AA',我需要一个C#中的代码/函数,它将递增它,直到它变为'Z9ZZ' 比如说。 第一个代码是“D9ZZ” 下一个代码应该是“E0AA” 对不起,也许我的例子很混乱。。这是另一个例子。。谢谢 第一个代码是“D9AZ” 下一个代码应该是“D9BA”这应该可以修复它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) => {
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进制计数器。。。假设第二个数字是字母数字,而不仅仅是给定示例中的数字。谢谢^ ^它起作用了。。呵呵。。对不起,我太懒了,还问你们。。非常感谢:)