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
尝试正则表达式提取最后一个数字(我们必须增加):
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()));
- 查找字符串 中的第一个数字
- 把它
- 解析第二部分为整数
- 增加
- 连接