如何基于Pattern生成字符串

时间:2012-09-27 09:31:36

标签: c# string string-formatting

我有一个案例,我必须根据具体的模式生成交易号码 模式如下:

  

MA 0000000 / dd / mm / YYYY / 00000

其中第一个零是随机数,那么当前日期和最后一个零应该是增量

  

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

请您提供正确的方法来实施此案例。

5 个答案:

答案 0 :(得分: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++ );
    }
}

答案 1 :(得分: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);
    }

答案 2 :(得分: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);

可能你担心两件事: DateTime格式:您可以使用:DateTime.Now.ToString("/dd/MM/yyyy/")

将前导零填充到数字,您可以使用:

counter.ToString("X4")

另见:How to: Pad a Number with Leading Zeros

答案 3 :(得分: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是增量数字。你应该知道这一点,或者找出下一个号码应该是什么。

答案 4 :(得分: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格式的数字