数组为新字符串

本文关键字:字符串 数组 | 更新日期: 2023-09-27 18:03:03

我正在为学校做一个网上商店,有一个快速的问题。我试着写一个代码,生成一个随机优惠券代码,它实际上是有效的(做了一些极端编程在控制台应用程序),但它根本不是有效的。

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张优惠券时……这不是真正的方法。

我确实看到了一些关于连接字符串的东西,使用字符串。插入到"-"之间,并循环多次,但我无法得到一个明确的教程,如何做到这一点……这样的代码。

谁有一个有效的(更可取的)简单的解决方案?

=======

更新!

最终会进入数据库

数组为新字符串

您可以使用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());

如果你想要更少的代码,你可以使用GUID并格式化它。

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());

代码不是很好,但对于学校应用程序将发挥我猜)

    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();
    }