我正在寻找可以生成第一项是数组的代码A, then B, then C。 。 。后Z然后它会去AA, then AB then AC。 。 。一直到ZZ.
在 C# 中执行此操作的最佳方法是什么?
其中一种方法是:
IEnumerable<string> generate()
{
for (char c = 'A'; c <= 'Z'; c++)
yield return new string(c, 1);
for (char c = 'A'; c <= 'Z'; c++)
for (char d = 'A'; d <= 'Z'; d++)
yield return new string(new[] { c, d });
}
Edit:
你实际上可以产生“无限”序列(以最大long
value),代码稍微复杂一些:
string toBase26(long i)
{
if (i == 0) return ""; i--;
return toBase26(i / 26) + (char)('A' + i % 26);
}
IEnumerable<string> generate()
{
long n = 0;
while (true) yield return toBase26(++n);
}
这个是这样的:A,B,...,Z,AA,AB,...,ZZ,AAA,AAB,...等:
foreach (var s in generate().Take(200)) Console.WriteLine(s);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)