C# 用户输入从C中的数组中选择字母和数字的数量
我正在尝试学习C语言,我正在制作一个密码生成器。我已经设置了一个数组,其中包含我希望程序使用的字母和数字C# 用户输入从C中的数组中选择字母和数字的数量,c#,arrays,C#,Arrays,我正在尝试学习C语言,我正在制作一个密码生成器。我已经设置了一个数组,其中包含我希望程序使用的字母和数字 String alphabet[] = {"abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"}; 我试图在for循环中编写一段代码,它将随机选取用户输入的任意长度的字母或数字 举例 字母长度为y 我就是不知道如何让它在循环中循环选择随机字母。你应该在这里使用随机字母。其思想是从用户那里获取密码长度,设置允许的字符
String alphabet[] = {"abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
我试图在for循环中编写一段代码,它将随机选取用户输入的任意长度的字母或数字
举例
字母长度为y
我就是不知道如何让它在循环中循环选择随机字母。你应该在这里使用随机字母。其思想是从用户那里获取密码长度,设置允许的字符,然后使用Random生成密码
String password = "";
for(int i = 0; i < USERINPUTLENGTH; i++)
{
//Get Random Char
String randomChar = alphabet[Random.next(alphabet.length)];
password += randomChar;
}
public static string CreatePassword(int passwordLength)
{
const string allowedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789!@$?_-";
char[] chars = new char[passwordLength];
Random rd = new Random();
for (int i = 0; i < passwordLength; i++)
chars[i] = allowedChars[rd.Next(0, allowedChars.Length)];
return new string(chars);
}
您不需要在字母表上循环,但需要在生成的密码中为每个字符循环一次
string GeneratePassword(int pwLength)
{
string alphabet = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var builder = new StringBuilder();
var random = new Random();
for(var i = 0; i < pwLength; i += 1) {
builder.Append(alphabet[random.Next(alphabet.Length)]);
}
return builder.ToString();
}
您可以使用无限随机字符生成器:
IEnumerable<char> GetRandomChars()
{
string alphabet =
"abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Random random = new Random();
while (true)
yield return alphabet[random.Next(alphabet.Length)];
}
使用System.Random拾取索引,循环是将索引收集到System.Text.StringBuilder中。不幸的是,您必须为我沉默,因为我不知道有人是如何做到的,但我建议您首先自己尝试,通常情况下,问题应该显示您的尝试,或者至少对问题有一些了解。对于准备使用的代码,有……您不需要alphabet.Length-1,因为绑定是排他性的。如果能够准确地解释此代码是如何工作的,这会有所帮助。
var result = new String(GetRandomChars().Take(length).ToArray());