c#生成Next序列的字母数字字符串

本文关键字:数字 数字字符 字符串 生成 Next | 更新日期: 2023-09-27 18:02:40

我想在c# windows应用程序中生成字母数字字符串Next序列。检查max号,生成Next序列

如-

  A10100001 => A10100002 => A10100003 => A10100004 ...... A10100999 => A10101001
  ABC000001 => ABC000002 => ABC000003 => ABC000004 ...... ABC000999 => ABC001001

c#生成Next序列的字母数字字符串

尝试正则表达式提取最后一个数字(我们必须增加):

private static string Next(string value) {
  string number = Regex.Match(value, "[0-9]+$").Value;
  return value.Substring(0, value.Length - number.Length) + 
         (long.Parse(number) + 1).ToString().PadLeft(number.Length, '0');
}

Regex.Replace版本,其中更简洁,但更少可读:

private static string Next(string value) {
  return Regex.Replace(value, "[0-9]+$", 
    match => (long.Parse(match.Value) + 1).ToString($"D{match.Length}"));
}
测试:

// "abc0046"
Console.Write(Next("abc0045"));
// "abc0045xyz124" (please, notice, that it's the last 123 which is incremented)
Console.Write(Next("abc0045xyz123"));

如果你有一个序列的项目相同的模式你可以使用Linq:

 string[] items = new string[] { "ABC001", "ABC105", "ABC024" };  
 // "ABC106"
 Console.Write(Next(items.Max())); 
  1. 查找字符串
  2. 中的第一个数字
  3. 把它
  4. 解析第二部分为整数
  5. 增加
  6. 连接