【问题标题】:Generate random sequence of AlphaNumeric [closed]生成 AlphaNumeric 的随机序列 [关闭]
【发布时间】:2021-12-30 10:00:07
【问题描述】:

我想要一个代码来生成字母数字字符序列,例如 LLNNLLNNLL,其中 L 是字母,N 是数字。例如,如果长度为 5,则序列为 LLNNL,如果长度为 6,则序列为 LLNNLL,如果为 7,则为 LLNNLLN。

string alphabets = "ABCDEFGHIJKLMNPQRSTUVWX";
int length = model.VALUE_INT;
string result = "";
for (int i = 0; i < length; i++)
{
    int next = _random.Next(23);
    result += alphabets.ElementAt(next);
    result += _randomNum.Next(1, 9);
}

这是我尝试过的,但条件不满足

【问题讨论】:

  • 另请注意,我正在使用 Random() 库来生成字母和数字
  • 这种问题在 StackOverflow 上通常是不允许的。你需要解释你尝试了什么,以及问题的本质是什么。 StackOverflow 不是一个“请做我的功课”的网站。只是为了给你一个方向,你可以尝试使用两个字母,一个用于“L”字母,一个用于“N”,并使用“for”循环生成所需数量的随机字符。
  • 明确一点,L 和 N 不是字母或任何东西。 L 可以是随机字符,N 可以是随机整数。顺便说一句,这不是我的作业,我想每次进入循环时生成一个唯一的代码。我尝试了很多东西,但没有成功,也分享了图片。最后的序列应该是我上面提到的......

标签: c#


【解决方案1】:

对于输出字符串的每个位置(值i),您需要检查是否需要字符或整数。
由于该模式每 4 个位置重复一次,因此您可以使用模运算符来实现:

for (int i = 0; i < length; i++)
{
    switch (i % 4)
    {
        case 0:
        case 1:
            int next = _random.Next(23);
            result += alphabets.ElementAt(next);
            break;

        case 2:
        case 3:
            result += _randomNum.Next(1, 9);
            break;
    }
}

或另一种可能性:添加 LLNN 块,然后将结果截断为所需长度...

for (int i = 0; i <= (length/4); i++)
{
    result += alphabets.ElementAt(_random.Next(23));
    result += alphabets.ElementAt(_random.Next(23));
    result += _randomNum.Next(1, 9); 
    result += _randomNum.Next(1, 9); 
}
result = result.Substring(0,length);

如果你想改进这些线路,你可以使用StringBuilder

【讨论】:

  • 谢谢,你添加的最后一段代码对我有用
猜你喜欢
  • 2012-01-20
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
  • 1970-01-01
  • 2020-06-07
  • 2016-09-02
  • 2019-06-23
相关资源
最近更新 更多