C#如何获取2个字符串之间的值?

录入起始 SD9001 至 结束值 SD19003
就得到 SD1900、SD1902、SD1903

好的,我发现我看错题了,下面的回答就当作废吧(呜)

==========

整了个符合字母+数字的,调试过了没有大问题。没有加入错误检测,而且如果需要有别的要求的还要自己进一步修改。

=====下面是C#控制台项目的代码=====

using System.Collections;//注意要额外加入这两个using

using static System.Console;

//下面是Program类的代码(并不包含namespace,粘贴时注意)

    class Program

    {

        static ArrayList StringList = new ArrayList();//用于存放输出字符串的集合

        static void Main(string[] args)

        {

            WriteLine("注意:\n①请保证开始和结束字符串的字母部分是一致的\n②请保证数字部分长度一致,如长度不足请从前补0,如:SD0001");

            WriteLine("请输入开始字符串");

            string str1 = ReadLine();

            WriteLine("请输入结束字符串");

            string str2 = ReadLine();

            getString(str1, str2);

            printStringList();

            ReadKey();

        }


        static void getString(string firstString,string lastString)

        {

            string tempLetters = string.Empty, tempNumbersF = string.Empty, tempNumbersL = string.Empty;

            int FirstNumber, LastNumber;

            foreach(char tempChar in firstString)//分隔开始字符

            {

                if(tempChar>='0'&&tempChar<='9')

                {

                    tempNumbersF += tempChar;//获取开始字符串中表示数字的部分

                }

                else

                {

                    tempLetters += tempChar;//获取开始字符串中表示字母的部分

                }

            }

            tempNumbersL = lastString.Replace(tempLetters, "");//获取结束字符串中表示数字的部分

            FirstNumber = int.Parse(tempNumbersF);

            LastNumber = int.Parse(tempNumbersL);

            for(int i=FirstNumber;i<=LastNumber;i++)

            {

                StringList.Add(tempLetters + i.ToString().PadLeft(tempNumbersF.Length,'0'));//数字转为字符串+补全+连接+传给集合

            }

        }


        static void printStringList()

        {

            int i = 0;

            WriteLine();

            foreach (string str in StringList)

            {

                Write($"{str}  ");

                if(++i%5==0)

                {

                    WriteLine();

                }

            }

        }

    }

温馨提示:答案为网友推荐,仅供参考
相似回答