有这样一个字符串
输入:A000Z-B360Z输出 
A000Z
A001Z
……
A360Z
B001Z
B002Z
……
B360Z

解决方案 »

  1.   

    for (int i = (int)s1[0]; i <= (int)s2[0]; i++)
        for (int j = int.Parse(s1.SubString(1, 3); j <= int.Parse(s2.SubString(1, 3); j++)
            Console.WriteLine(((char)i).ToString() + j.ToString().PadLenft(3, '0') + "Z");
      

  2.   

    string s1 = "A000Z", s2 = "B360Z";
      

  3.   

    如果输入是
    A000Z-B360Z 或者是
    0000A-3600B 这样的格式呢?
      

  4.   

    00A00
    00A01
    ……
    35B99
    36A0000B00
    00B01
    ……
    35B99
    36B00
      

  5.   

    应该是变进制数的枚举。
    using System;
    using System.Collections.Generic;
    using System.Linq;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                //A000Z
                //A001Z
                //……
                //A360Z
                //B001Z
                //B002Z
                //……
                //B360Z
                var rad = new List<string[]>(3); //就把它当一个三位数,个位是1进制,十位360+1进制,百位2+1进制
                rad.Add(new[]
                        {
                            "A", "B"
                        });            rad.Add(Enumerable.Range(0, 361).Select(i => i.ToString("000")).ToArray());
                rad.Add(new[]
                        {
                            "Z"
                        });            foreach (var item in new VarNumberEnum(rad.ToArray()).Enum())
                {
                    Console.Write(item + "\t");
                }            //00A00-36B00
                rad.Clear();
                rad.Add(Enumerable.Range(0, 37).Select(i => i.ToString("00")).ToArray());
                rad.Add(new[]
                        {
                            "A", "B"
                        });
                rad.Add(Enumerable.Range(0, 100).Select(i => i.ToString("00")).ToArray());
                foreach (var item in new VarNumberEnum(rad.ToArray()).Enum())
                {
                    Console.Write(item + "\t");
                }
            }
        }    class VarNumberEnum //实现变进制数枚举
        {
            string[][] rad;        public VarNumberEnum(params string[][] rad)
            {
                //if rad.length==0???  if rad[x]==0???
                this.rad = rad;
            }        internal IEnumerable<string> Enum()
            {
                var enumerators = rad.Select(r => r.GetEnumerator()).ToArray(); //每个元素代表一“位”            Array.ForEach(enumerators, enumerator => enumerator.MoveNext());            //先返回第1个
                yield return string.Concat(enumerators.Select(e => e.Current));            while (true)
                {
                    for (var i = rad.Length - 1; i >= 0; i--)
                    {
                        if (enumerators[i].MoveNext()) //+1成功,中止循环。+1不成功再从0开始并进位
                        {
                            break;
                        }
                        if (i == 0) //循环完了,中止
                        {
                            yield break;
                        }
                        enumerators[i].Reset();
                        enumerators[i].MoveNext();
                    }
                    yield return string.Concat(enumerators.Select(e => e.Current));
                }
            }
        }
    }
      

  6.   

    如果是数字和字母的位置,不固定的
    例如0A000-3B600
    或者00A0A-36C0C这个前提是字母和数字的顺序,必须是对应的
      

  7.   

    和我原来写的序号生成表达式有点类似啊。不过我用的是偏正则的方式:[00-30][A-C,Z][000-999]简单提下我的思路,每个中括号里是一个范围表达式,分割计算每个表达式中的所有可能字符串,生成一个string[]。如上,就会有3个字符串数组,然后用递归的方式将3个字符串数组合并成一个