我需要一个算法来生成一组库存商品序列号,从起始序列开始工作。
例如,如果起始序列为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;
}
这让我有些进展,但删除了前导零,并且没有增加字母。我不太了解正则表达式(从论坛帖子中复制了上面的代码)- 有什么想法可以实现这一点吗?
B10S999
后面是B10T001
而不是B10T000
,这正常吗? - UmNyobe