我想生成一个只包含字母数字字符的随机字符串列表。字符串的长度可以是任何大小。有没有办法使用递归来做到这一点?
答案 0 :(得分:3)
这里不需要递归。只需在字符串中写下您想要的字符,例如:
string allowedCharacters = "abcdefghijklmnopqrstuvwxyz0123456789";
然后你可以随便从中抓取字符:
Random rnd = new Random();
string randomString(int length)
{
int num = allowedCharacters.Length;
return new string(Enumerable.Range(0, length)
.Select(i => allowedCharacters[rnd.Next(0, num)])
.ToArray());
}
最后,您可以使用它来生成随机长度的字符串:
// Outputs a random string of a length between 5 and 49 characters
Console.WriteLine(randomString(rnd.Next(5, 50)));
答案 1 :(得分:3)
由于您明确要求递归,因此这是一个递归解决方案。但这很慢。
static string allowedCharacters = "abcdefghijklmnopqrstuvwxyz0123456789";
static Random rnd = new Random();
static string randomString(int length)
{
if (length == 0)
return "";
return allowedCharacters[rnd.Next(0, allowedCharacters.Length)]
+ randomString(length - 1); // This is the recursive call.
}
现在您可以使用它来生成随机长度的字符串:
// Outputs a random string of a length between 5 and 49 characters
Console.WriteLine(randomString(rnd.Next(5, 50)));