【发布时间】:2016-12-11 07:44:13
【问题描述】:
提前谢谢,我想生成从 A 到 Z 的序列,然后是 0 到 9,之后它将移动到 AA,AB,AC ..... AZ,A0,A1 .... A9,学士等
我曾尝试如下实现它
public static string GenerateSequence(List<string> inputList)
{
string identifierCode = "A";
//check if list does not contains any element
if (!inputList.Any()) return identifierCode;
//sort codes
inputList.Sort();
//get last code
var lastItem = inputList[inputList.Count - 1];
//split code
var splittedChars = lastItem.ToCharArray();
bool incrementNext = true;
for (int i = 0; i < splittedChars.Length; i++)
{
if (incrementNext)
{
var effectedNumber = splittedChars.Length - (i + 1);
if (effectedNumber >= 0)
{
var charToIncrement = splittedChars[effectedNumber];
switch (charToIncrement)
{
case 'Z':
charToIncrement = '0';
incrementNext = false;
break;
case '9':
charToIncrement = 'A';
incrementNext = true;
splittedChars[effectedNumber] = charToIncrement;
break;
default:
charToIncrement++;
incrementNext = false;
break;
}
splittedChars[effectedNumber] = charToIncrement;
}
else
{
return "A" + splittedChars;
}
}
}
return new string(splittedChars);
}
但是 inputList.Sort() 在 Alphabets 之前对数字进行排序,所以我的代码在 Z 之后失败
【问题讨论】:
-
如果您是初学者,最简单的方法是创建一个包含所有项目的数组。因此,在您的情况下,它将是[“A”,“B”...“Z”,“0”,“1”...“9”]。老实说:如果从那时起你不能很容易地做到这一点,你需要一个新的爱好!从最基本的编程概念重新开始。
-
@JoeBlow:字符是序数,所以
Enumerable.Range()是你真正需要的... -
是的,我只是在想最简单的方法。很少有爱好者知道“可枚举”是什么意思!
-
感谢您给我宝贵的时间,实际上它的计数器在我的情况下必须以数百万运行,看起来很讨厌,但根据用户要求我必须忍受它,我尝试了一些其他技术但是还是没有这么幸运.....