慕莱坞森
这是一个扩展方法,它将整数值格式化为您的格式(带前导字母):public static string ToZormat(this int value, int length = 5){ string map = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char[] result = new char[length]; var x = value; for(int i = 0; i < length; i++) { int threshold = (int)Math.Pow(10, length - i - 1); var index = Math.Min(map.Length - 1, x / threshold); result[i] = map[index]; x -= threshold * index; } return new String(result);}当您将数字格式化为长度为 5 的字符串时,前导字母会出现在 value 99,999、 next go A0,000、 ...A9,999等之后B0,000。如您所见,第一个字符会更改每个10,000数字。第二个字符改变每个1,000数字。最后,每个数字的第五个字符都会改变。我们只需要实现那个算法。基本步骤:定义格式中使用的字符映射计算当前位置 (i) 的字符变化阈值 - 它将是 10 的幂:10,000, 1,000, 100, 10, 1。从地图中获取字符索引。它只是适合该值的阈值数,但不超过地图中的字符数。计算输入值的剩余部分并转到下一个位置您应该为适合格式化字符串的给定长度的最大值添加验证。长度 3 的样本:Enumerable.Range(0, 3886).Select(x => x.ToZormat(3))输出:000001002...999A00A01...A99B00B01...Z99ZA0ZA1...ZZ9ZZA...ZZZ