如何在C#中生成格式化的字母数字字符串

3

我想生成一个由5个字母和数字组成的随机字符串,但其中两个字符应该是字母,其余字符应该是数字。

 RL589

为此,我已经做了如下操作:
        var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        var stringChars = new char[5];
        var random = new Random();

        for (int i = 0; i < stringChars.Length; i++)
        {
            stringChars[i] = chars[random.Next(chars.Length)];
        }

        var finalString = new String(stringChars);

但我不知道如何安排前两个字母为字符,后面的则应该是数字。请有经验的人帮助我。

1
两个字符的字符串,一个是a-z之间的字母,另一个是0-9之间的数字,或者前两个字符使用0-25之间的随机数作为索引,后三个字符使用26-35之间的随机数? - Fred
3
等待着“我也需要它们是独一无二的”……^_^; - Corak
5个回答

4

生成两个字符串,一个由字符组成,一个由数字组成,然后将它们连接起来。


2
使用两个循环,例如像这样:
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var numbers = "0123456789";
var stringChars = new char[5];
var random = new Random();

for (int i = 0; i < 2; i++)
{
  stringChars[i] = chars[random.Next(chars.Length)];
}
for (int i = 2; i < stringChars.Length; i++)
{
  stringChars[i] = numbers[random.Next(numbers.Length)];
}

var finalString = new String(stringChars);

0
var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var numbers = "0123456789";

var stringChars = new char[5];

var random = new Random();

for (int i = 0; i < stringChars.Length; i++)
{
    if (i < 2)
    {
        stringChars[i] = letters[random.Next(letters.Length)];
    }
    else
    {
        stringChars[i] = numbers[random.Next(numbers.Length)];
    }
}

var finalString = new String(stringChars);

0

你不需要任何字符串。 只需使用 charint 之间的隐式转换:

var stringChars = new char[5];
var random = new Random();

for (int i = 0; i < 2; i++)
{
    stringChars[i] = (char)random.Next('A', 'Z');
}
for (int i = 2; i < 5; i++)
{
    stringChars[i] = (char)random.Next('0', '9');
}

var finalString = new String(stringChars);

0
为什么不直接使用Random对象来创建随机数呢?
var stringChars = new StringBuilder();
var random = new Random();

for (int i = 0; i < 2; i++)
{
    stringChars.Append((char)random.Next('A', 'Z'));
}

var finalString = string.Format("{0}{1}{2}{3}", stringChars.ToString()
    , random.Next(1, 9)
    , random.Next(1, 9)
    , random.Next(1, 9));

或者简单地说

var finalString = string.Format("{0}{1}", stringChars.ToString()
        , random.Next(100, 999));

为什么要使用 StringBuilder,字符串拼接总是会创建一个新的实例,因此应该避免这种情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接