【问题标题】:C# String generatorC# 字符串生成器
【发布时间】:2013-12-27 08:04:12
【问题描述】:

我是 C# 新手,我想知道你们是否可以帮助我。首先,我正在制作一个非常简单的生成器。我希望它在每次按下生成按钮时给我一个默认字符串。(字符串是 00000001008)然后我想在末尾添加一个随机数/字母,这个数字/字母必须是 3-9/ AF。然后我想要另一个由 0-9 和 A-F 的字母和/或数字组成的字符串。我有一个正常的概念,这是我目前所拥有的:

public string GenerateRandomCode(ref int length)
{
    string charPool = "ABCDEF1234567890";
    StringBuilder rs = new StringBuilder();
    Random random = new Random();

    for (int i = 0; i < length; i++)
    {
        rs.Append(charPool[(int)(random.NextDouble() * charPool.Length)]);
    }
    return rs.ToString();
}

private void button1_Click(object sender, EventArgs e)
{
    textBox1.Text = "00000001008";
}

【问题讨论】:

  • 你的问题是?
  • 如何让最后的字符串进入textBox1.Text
  • 你的代码有什么问题?不确定您使用的是什么Random,但.NET 的System.Random 类中没有NextDouble() 方法。
  • @user3138797 textBox1.Text += "Your text here"; :) 在通过 ref 传递值类型时也要小心。
  • 您是在问如何调用方法并将其结果分配给属性?你读过任何 C# 教程或书籍吗?

标签: c# generator


【解决方案1】:

更改为(假设您的随机课程有效):

public string GenerateRandomCode(int length)
{
    string charPool = "ABCDEF1234567890";
    StringBuilder rs = new StringBuilder();
    Random random = new Random();

    for (int i = 0; i < length; i++)
    {
        rs.Append(charPool[(int)(random.NextDouble() * charPool.Length)]);
    }
    return rs.ToString();
}

private void button1_Click(object sender, EventArgs e)
{
    textBox1.Text = "00000001008" + GenerateRandomCode(1);
}

虽然我认为你可以生成一个十六进制字符串(这将满足生成 0-9、A-F - 11 个字符长的要求):

textBox1.Text = String.Format("{0:X11}", new Random().Next(0x100000000000))

or (应该给出 vals "00000001008" + x3-xF) ...

public string GenerateRandomCode()
{
    return "00000001008" + string.Format("{0:X1}", new Random().Next(12) + 3));
}
private void button1_Click(object sender, EventArgs e)
{
    textBox1.Text = GenerateRandomCode();
}

【讨论】:

  • 但我也想要文本框文本开头的 00000001008
  • 谢谢兄弟,感谢您的帮助:)
  • 我希望这就是你所追求的
  • 是的,只是我想要在初始字符串之后仅 3-9/A-F 的单独字节
  • @user3138797 请查看最新版本,如果可行,请标记为答案,谢谢
【解决方案2】:
public string GenerateRandomCode(int length)
{
    var chars = "ABCDEF1234567890";
    var random = new Random();
    return new string(
        Enumerable.Repeat(chars, length)
              .Select(s => s[random.Next(s.Length)])
              .ToArray()
    );
}

private void button1_Click(object sender, EventArgs e)
{
    textBox1.Text = GenerateRandomCode(11);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    相关资源
    最近更新 更多