我正在制作自己的密码生成器;我希望它创建包含数字,小写字母和大写字母的密码。
我使用Visual Studio在C#中编写程序 假设我使用下面的代码:
Random Rand = new Random();
Char C = Convert.ToChar(Rand.Next(0x30, 0x5A));
我怎样才能让我的程序检查(C)是等于数字还是大写字母?
答案 0 :(得分:5)
使用Char.IsDigit
(小数位数)或Char.IsNumber
和Char.IsUpper
。
这些都是在Char
结构上定义的静态方法。
一个例子,按要求:
if(Char.IsNumber(C))
{
// Character is marked as a unicode number
}
答案 1 :(得分:1)
您可以查看是否:
int ordinal = (int)C;
if(( ordinal >= 65 && ordinal <= 90 ) || (ordinal >= 48 && ordinal <= 57))
{
Console.WriteLine( C + " is an uppercase A-Z or 0-9!" );
}
答案 2 :(得分:0)
可能只使用Char.IsNumber和Char.IsUpper方法: 看到: http://msdn.microsoft.com/en-us/library/9s91f3by.aspx http://msdn.microsoft.com/en-us/library/yk2b3t2y.aspx
if(C.IsNumber || C.IsUpper) { //密码代码! }
(不要写自己的密码生成器,除非它只是为了好玩)。
答案 3 :(得分:0)
更好(和标准)的方法是创建一个允许字符的'alphabet'字符串,然后在字符串中生成一个随机索引,以选择一个允许的字符。
比首先生成一个随机字符要好得多,然后检查是否允许。
"0123456789abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
注意删除的小写'l'(看起来像1)。您应该删除任何其他内容,例如零与“O”可能......或密码规则允许的任何内容)
以下是使用此技术生成随机字符串的示例:
public static class RandomUtils
{
private static readonly Random random = new Random();
public static string GenerateRandomAlphaNumericString(int length)
{
const string alpha =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
return GenerateRandomString(length, alpha);
}
public static string GenerateRandomString(int length, string alphabet)
{
int maxlen = alphabet.Length;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++)
{
sb.Append(alphabet[random.Next(0, maxlen)]);
}
return sb.ToString();
}
}