例如:1、字符串“AB0021”,末尾+1,变成“AB0022”。2、字符串“AZ9999”,末尾+1,变成“BA0000”。
题主要的代码如下
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();
}
}
}
首先问一下题主,格式一定是两位字符,四位数字吗?
思想是这样的,分别截取字母和字母后的字符串,然后转换成数字,再加1,然后再吧截取的字符串和加1后的数字拼接即可