数组到新字符串

时间:2014-05-12 20:07:50

标签: c# arrays string join random

我正在为学校开设网店,并提出了一个简单的问题。 我试图编写一个生成随机优惠券代码的代码,它实际上有效(在控制台应用程序中做了一些极端编程),但它效率不高。

static void Main(string[] args)
    {
        Random r = new Random();
        string ALphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        int size = 4;

        char[] code1 = new char[size]
        char[] code2 = new char[size]
        char[] code3 = new char[size]
        for (int i = 0; i < size; i++)
        {
            code1[i] = Alphabet[r.Next(Alphabet.Length)];
            code2[i] = Alphabet[r.Next(Alphabet.Length)];
            code3[i] = Alphabet[r.Next(Alphabet.Length)];
        }

        string code4 = new string(code1);
        string code5 = new string(code2);
        string code6 = new string(code3);

        Console.WriteLine(code4 + " - " + code5 + " - " + code6);
        Console.ReadLine();
    }

这可行..不知何故。但我希望看到它更有效率,因为当我想生成100张优惠券时......这并不是真正的方法。

我确实看到了加入字符串的内容,使用string.Insert来获取&#34; - &#34;介于两者之间并多次循环,但是我无法通过这种代码得到明确的教程。

任何人都有一个有效且(更可取)的简单解决方案吗?

=======

UPDATE!

这最终会在数据库中结束

2 个答案:

答案 0 :(得分:1)

您可能正在使用StringBuilder

    StringBuilder sb = new StringBuilder();

    Random r = new Random();
    string Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    int size = 16;

    for (var i = 0; i < size; i++)
    {
        sb.Append(Alphabet[r.Next(Alphabet.Length)]);
    }                 

    Console.WriteLine(sb.ToString());

如果您想要更少的代码,可以使用GUIDformat

Guid.NewGuid().ToString("N").Substring(0, 16);

更新,只是看到你需要在优惠券的每个部分之间进行一些格式化,所以我把它改成了一点点:

    StringBuilder sb = new StringBuilder();

    Random r = new Random();
    string Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    int pieces = 3, pieceSize = 4;

    for (var i = 0; i < pieces; i++)
    {
        if(i != 0)
            sb.Append(" - ");

        for (var j = 0; j < pieceSize; j++)
        {
            sb.Append(Alphabet[r.Next(Alphabet.Length)]);
        }
    }

    Console.WriteLine(sb.ToString());

答案 1 :(得分:0)

代码不是很好,但对于学校应用程序我会猜测)

    static string GenerateCoupon(Random r)
    {
        string Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        int size = 4;

        char[] code1 = new char[size];
        char[] code2 = new char[size];
        char[] code3 = new char[size];
        for (int i = 0; i < size; i++)
        {
            code1[i] = Alphabet[r.Next(Alphabet.Length)];
            code2[i] = Alphabet[r.Next(Alphabet.Length)];
            code3[i] = Alphabet[r.Next(Alphabet.Length)];
        }

        string code4 = new string(code1);
        string code5 = new string(code2);
        string code6 = new string(code3);

        return string.Format("{0}-{1}-{2}", code4, code5, code6);
    }

    static void Main(string[] args)
    {
        Random rnd = new Random();
        for (int i = 0; i < 100;i++ )
            Console.WriteLine(GenerateCoupon(rnd));
         Console.ReadLine();

    }