2016-11-24 7 views
-8

私の参照番号は「DTS00001は」それは私が1で、この番号をインクリメントしたい
C#プログラム内の文字列変数であるとの結果が「DTS00002」ここC#の参照番号に1を追加

があるようにする必要がありありコードを試しました

while (reader.Read()) 
{ 
    String str = reader["rfno"].ToString(); 
    String st = str.Substring(3, 5); 
    int number = Convert.ToInt32(st);      
    number += 1; 
    string myNewString = "DTS" + number; 

    MessageBox.Show(myNewString); 

結果には、新しい番号の前に必要な先行ゼロが含まれていません。

+4

あなたがこれまでに試してみましたか?残念ながら、私たちはあなたの個人的なコード作成サービスではありません。 – RandomStranger

+0

アルファ数値と数値を( 'string.Substring()'を使って)分割することから始めましょう。数値を解析するには 'int.TryParse()'を使います。 1を加えて再フォーマットする –

+3

それは宿題です... –

答えて

0

宿題は、それを行う方法があります。 が大きくに影響を受けています。stemas answerです。数字からアルファベットを分割するのにRegexを使います。先頭にゼロの正しい数を維持するためにPadLeft

Tim Schmelters answerははるかにエレガントですが、これは他のタイプの製品番号でも機能し、最初の特定の数の先頭ゼロまたは特定の文字セットに限定されません。この解決法の欠点は、[アルファベット] [数値]でなければならないということです。

private static string Increase(string productNo) 
{ 
    // This is a regex to split it into to groups. 
    var numAlpha = new Regex("(?<Alpha>[a-zA-Z]*[ _]?)(?<Numeric>[0-9]*)"); 
    // Match the input string for the regex. 
    var match = numAlpha.Match(productNo); 
    // Get the alphabetical part. 
    var alpha = match.Groups["Alpha"].Value; 
    // Get the numeric part. 
    int num = int.Parse(match.Groups["Numeric"].Value); 
    // Add +1 
    num++; 
    // Combine the alphabetical part with the increased number, but use PadLeft to maintain the padding (leading zeros). 
    var newString = string.Format("{0}{1}", alpha, num.ToString().PadLeft(match.Groups["Numeric"].Value.Length, '0')); 
    return newString; 
} 


Console.WriteLine(Increase("DTS00008")); 
Console.WriteLine(Increase("DTS00010")); 
Console.WriteLine(Increase("DTS00020")); 
Console.WriteLine(Increase("DTS00099")); 
Console.WriteLine(Increase("PRODUCT0000009")); 
Console.WriteLine(Increase("PRODUCT0000001")); 

出力:

DTS00009 
DTS00011 
DTS00021 
DTS00100 
PRODUCT0000010 
PRODUCT0000002 
+0

$ "{alpha} {num.ToString()。PadLeft(match.Groups [" Numeric "]。Value.Length、 '0')}";このコードでエラーが発生しました;予期しています – Yasitha

+0

@ Yasitha - 代わりに旧式の 'string.Format'に変更されました。 _string interpolation_には.NETバージョンの要件がいくつかあります。 – smoksnes

+0

ありがとう@smoksnes、働いて、ありがとう – Yasitha

関連する問題