2017-07-27 21 views
0

私は8桁の文字番号を生成するために以下のコードを書きましたが、左から右にインクリメントする必要があります。cで英数字シーケンス番号を生成する方法

私の開始番号は次のインクリメント数がABC00002

数になりますABC00001であると仮定は9まで増加しますと9の後にそれがに変わります。 例:ABC00009 - > ABC00000A - > ABC00000B - > ... - >それはABC0000A1として最後の二桁の数字を変更しますZ後ABC00000Z

- > ABC0000A2 ...

public static string GeneratedNextevcPrimakryKey() 
     { 
      System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
      string str = string.Empty; 

      var maxNumber = "ONC0BJKZ"; 

      string splitnumber = maxNumber.Substring(3, 5); 
      char[] temp = splitnumber.ToCharArray(); 
      //find last index number/character 
      for (int i = splitnumber.Length - 1; i >= 0; i--) 
      { 
       if (char.IsNumber(splitnumber[i])) 
       { 
        int fifthvalue = Convert.ToInt32(splitnumber[i].ToString()); 

        //increment 5th digit character 
        if (fifthvalue == 9) 
        { 
         temp[i] = 'A'; 
         break; 
        } 
        else 
        { 
         fifthvalue = fifthvalue + 1; 
         string f = Convert.ToString(fifthvalue); 
         temp[i] = Convert.ToChar(f); 
         //sb.Append(fifthvalue); 
         break; 
        } 
       } 
       else 
       { 
        char letter = splitnumber[i]; 
        char nextChar = new char(); 
        if (letter == 'z') 
        { 
         string strvalue = Convert.ToString(1); 
         temp[i] = Convert.ToChar(strvalue); 
        } 
        else if (letter == 'Z') 
        { 
         //last digit character 
         string strvalue = Convert.ToString(1); 
         temp[i] = Convert.ToChar(strvalue); 
         str = new string(temp); 

         break; 
        } 
        else 

         nextChar = (char)(((int)letter) + 1); 

        temp[i] = nextChar; 
        str = new string(temp); 
        break; 
       } 


      } 
      return str; 
     } 
+3

を実装しようとすることができますか? – Will

+0

ここであなたの質問は何ですか?エラーや意図しない結果に遭遇しましたか?これをより良く/より速くする方法のフィードバックを求めていますか? –

+0

はい、出力が正しく生成されません。 –

答えて

0

あなたはたぶん誰upvotedは、[編集]これに質問を追加することができますBase36

void Main() 
{ 
    // 17 would be the number you want to convert to your ABC format 
    var result = ToBase36(17); 
    Console.WriteLine(result); 
    // Will print "ABC00000H" 
} 

private static string ToBase36(ulong value) 
{ 
    const string base36 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
    var sb = new StringBuilder(9); 
    do 
    { 
     sb.Insert(0, base36[(byte)(value % 36)]); 
     value /= 36; 
    } while (value != 0); 

    var paddedString = "ABC" + sb.ToString().PadLeft(6, '0'); 
    return paddedString; 
} 
関連する問題