我需要一种算法来生成一组库存项目序列号,从起始序列开始工作。
例如,起始序列为B10S001
,并生成 3 个数字,结果应该是 -
B10S001
B10S002
B10S003
但是,如果起始序列为B10S998
,并生成 3 个数字,则结果应该是 -
B10S998
B10S999
B10T000
即数字的数量必须保持不变,必要时最后一个字母递增。
注意 - 我不知道第一个序列号的结构。它可以是任意长度以及字母和数字的任意组合。
我现在使用的代码是:
public static string IncrementNumber(string pNumber) {
string newNum = "";
var match = Regex.Match(pNumber, @"(?<=(\D|^))\d+(?=\D*$)");
if (match.Success) {
var number = int.Parse(match.Value) + 1;
newNum = string.Format(
"{0}{1}{2}",
pNumber.Substring(0, match.Index),
number,
pNumber.Substring(match.Index + match.Length));
}
return newNum;
}
这给了我一些帮助,但会删除前导零,并且不会增加 alpha。不太了解正则表达式(从论坛帖子中复制上述代码) - 任何想法如何实现这一点?