字符串特殊处理之一(生成连续序号)

博客围绕字符串处理问题展开,给出示例,如输入Name = sample12,count = 3,应返回{sample13,sample14,sample15}。还说明了判断字符串最后部分数字的原则,如忽略数字部分外空格等,同时提及截取字符串前后子串。

问题来自本论坛:

            /*举例:Name = sample12   ,    count = 3
             应该返回List<string> = {sample13,sample14,sample15}
             判断字符串最后部分的数字时的原则:
             1).忽略数字部分外的空格:即"sample 12","sample12 ","sample 12 "都认为数字是12;而"sample1 2"则认为是2;
             2).最后一位不是空格也不是数字,则认为数字是0;如"sample 12a","sample12b","sample 12  b8e"都认为数字是0;*/

            List<string> 生成 = new List<string>();
            Func<string, int> 取数字 = delegate(string 信息)
            {
                string 字 = "";
                int 量 = 信息.Length;
                if (!Char.IsDigit(信息[--量]))
                    字 = "0";
                else
                    do { if (Char.IsDigit(信息[量])) 字 = 字.Insert(0, 信息[量].ToString()); else break; } while (--量 > 0);
                return int.Parse(字);
            };
            Func<string[], int> 转数字 = delegate(string[] 信息)
            {
                int 判断 = 0, 检 = 0;/*如果转换成功则输出转换值否则等于设定值0*/
                foreach (string 信 in 信息)
                    if (信 != "") { int.TryParse(信, out 检); ++判断; }/*包含对多空格处理*/
                return 判断 < 2 ? 取数字(信息[0]) : 检;
            };
            Func<string, int, List<string>> 符串最后部分的数字 = delegate(string 信息, int 数量)
            {
                int 数 = 0, 序 = 0;
                string[] 拆分 = 信息.Split(' ');
                序 = 数 = (拆分.Length > 1) ? 转数字(拆分) : 取数字(拆分[0]);
                do
                {
                    生成.Add(数 > 0 ? 信息.Replace(数.ToString(), (++序).ToString()) : 信息 + (++序).ToString());
                } while (--数量 > 0);
                return 生成;
            };
            符串最后部分的数字("sample12  ", 4);
            foreach (string 信息 in 生成)
                Console.WriteLine(信息);

截取字符串的前后子串:

            string aa = "1231233";
            string bb = aa.Remove(aa.Length - 1);/*保留前面的字符*/
            string cc = aa.Substring(3);/*保留后面的字符*/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值