这是检查字符完整性的好方法'

本文关键字:方法 检查 字符 完整性 | 更新日期: 2023-09-27 17:54:42

我正在制作自己的密码生成器;我想让它创建包含数字、小写字母和大写字母的密码。

我用c#编写程序,使用Visual Studio。
假设我使用下面的代码:

Random Rand = new Random();
Char C = Convert.ToChar(Rand.Next(0x30, 0x5A));

如何让程序检查(C)是否等于一个数字或大写字母?

这是检查字符完整性的好方法'

使用Char.IsDigit(对于十进制数字),或者Char.IsNumberChar.IsUpper

这些都是在Char结构上定义的静态方法。


一个示例,按要求:

if(Char.IsNumber(C))
{
  // Character is marked as a unicode number
}

您可以检查是否:

int ordinal = (int)C;
if(( ordinal >= 65 && ordinal <= 90 ) || (ordinal >= 48 && ordinal <= 57))
{
Console.WriteLine( C + " is an uppercase A-Z or 0-9!" );
}

一个更好的(和标准的)方法,是创建一个允许字符的'字母表'字符串,然后在字符串中生成一个随机索引,以选择一个允许的字符。

比首先生成一个随机字符和然后检查是否允许要好得多。

"0123456789abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

注意删除的小写'l'(看起来像1)。你应该删除任何其他的,比如0和'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();
    }
}

可能只使用Char。IsNumber和Char。isup方法:看到的:http://msdn.microsoft.com/en-us/library/9s91f3by.aspxhttp://msdn.microsoft.com/en-us/library/yk2b3t2y.aspx

if (C.IsNumber || C.IsUpper){//密码码!}

(不要编写自己的密码生成器,除非只是为了好玩)。