開始シリアルから作業して、一連の在庫品目シリアル番号を生成するアルゴリズムが必要です。
たとえば、開始シリアルが で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;
}
これである程度は理解できますが、先頭のゼロが削除され、アルファは増加しません。正規表現についてあまり知りません (フォーラムの投稿から上記のコードをコピー) - これを達成する方法はありますか?