0

特定のパターンに基づいてトランザクション番号を生成する必要がある場合があります。パターンは次のとおりです。

MA 0000000 / dd / mm / YYYY / 00000

ここで、最初のゼロは乱数であり、現在の日付と最後のゼロは増分である必要があります

(00001 ... 00010 ... 00100 ... 00578)

このケースを実装する正しい方法を教えてください。

4

5 に答える 5

5
public static class Generator
{
    static int current = 0;
    static Random rand = new Random();

    public static string NextId()
    {
        return string.Format("MA {0:0000000}/{1}/{2:00000}", 
          rand.Next() % 100000,
          DateTime.Now.ToString("dd/MM/yyyy"),
          current++ );
    }
}
于 2012-09-27T09:41:21.803 に答える
1
    public string NextId(int lastCount)
    {
        var rand = new Random();

        return string.Format("MA{0:0000000}/{1}/{2:00000}", 
            rand.Next(9999999),
            DateTime.Today.ToString("dd/MM/yyyy"),
            lastCount + 1);
    }
于 2012-09-27T09:37:43.840 に答える
1
Random rand = new Random();
int randomNumber = rand.Next(100000000);
int counter = 1;
string str = "MA" + randomNumber.ToString() + DateTime.Now.ToString("/dd/MM/yyyy/") + counter.ToString("X4");
Console.WriteLine(str);

おそらくあなたは2つのことについて心配しています:DateTimeフォーマット:あなたは以下を使うかもしれません:DateTime.Now.ToString("/dd/MM/yyyy/")

先行ゼロを数値にパディングするには、次を使用できます。

counter.ToString("X4")

参照:方法:先行ゼロで数値を埋める

于 2012-09-27T09:38:49.340 に答える
0
Random rand = new Random();
string random = rand.Next(10000000).ToString("D7");
string date = DateTime.Today.ToString("dd/MM/yyyy");
string increment = inc.ToString("D5");
String.Format("MA {0}/{1}/{2}", random, date, increment);

ここで、incは増分数です。あなたはこれを知っているべきです、さもなければ次の数がどうあるべきかを見つけてください。

于 2012-09-27T09:44:40.053 に答える
0
for(int i=0;i<n;i++)
{
Console.WriteLine("MA "+(new Random()).Next(0,100).ToString("D7")+DateTime.Now.ToString("dd/MM/yyyy")+ i.ToString("D5"));
}

Next()0〜100の乱数を生成する場所

i.ToString("D5")00001..形式で番号が表示されます

于 2012-09-27T09:49:43.547 に答える