例如:1、字符串“AB0021”,末尾+1,变成“AB0022”。2、字符串“AZ9999”,末尾+1,变成“BA0000”。
4条回答 默认 最新
- CSDN专家-showbo 2022-02-15 12:40关注
题主要的代码如下
using System; using System.Text.RegularExpressions; namespace ConsoleApp1 { class Program { public static string AddOne(string s) { s = s.ToUpper(); Regex re = new Regex(@"^([A-Z]*)(\d+)$", RegexOptions.Compiled); if (string.IsNullOrEmpty(s) || !re.IsMatch(s)) return "输入格式有误,请输入字母开头数字结尾的字符串"; Match m = re.Match(s); string sChar = m.Groups[1].Value; int num = int.Parse(m.Groups[2].Value.TrimStart('0')); int numLen = m.Groups[2].Value.Length; num += 1; if (num.ToString().Length > numLen) { num = 0; if (sChar == "") sChar = "A"; else { int index = sChar.Length - 1; var arr = sChar.ToCharArray(); bool flag = false; while (index >= 0) { var c = arr[index]; if (c != 'Z') { flag = false; arr[index] = (char)(int)(sChar[index] + 1); break; } else { arr[index] = 'A'; flag = true; } index--; } sChar = (flag ? "A" : "") + string.Join("", arr); } } s = sChar + num.ToString().PadLeft(numLen, '0'); return s; } static void Main(string[] args) { Console.WriteLine(AddOne("AB998")); Console.WriteLine(AddOne("AB0021")); Console.WriteLine(AddOne("AZ9999")); Console.WriteLine(AddOne("ZZ9999")); Console.WriteLine(AddOne("ZAZ9999")); Console.ReadKey(); } } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
- ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
- ¥15 cmd cl 0x000007b
- ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
- ¥500 火焰左右视图、视差(基于双目相机)
- ¥100 set_link_state
- ¥15 虚幻5 UE美术毛发渲染
- ¥15 CVRP 图论 物流运输优化
- ¥15 Tableau online 嵌入ppt失败
- ¥100 支付宝网页转账系统不识别账号