C# 如何从此枚举开关函数检索结果?

C# 如何从此枚举开关函数检索结果?,c#,winforms,enums,passwords,C#,Winforms,Enums,Passwords,我有一个确定密码强度的基本工具(不是我的代码)。当单击按钮1时,我更改了代码以从文本框(textBox1)检索我们正在测试的密码。但是,标签(结果)仅显示弱或无的结果。我做错了什么?如何使标签反映在Enum函数PasswordScore中找到的结果 有没有一种更简单的方法来确定你们使用过的密码强度 public partial class Form7 : Form { public Form7() { InitializeComponent(); }

我有一个确定密码强度的基本工具(不是我的代码)。当单击
按钮1
时,我更改了代码以从
文本框(
textBox1
)检索我们正在测试的密码。但是,标签(结果)仅显示弱或无的结果。我做错了什么?如何使标签反映在
Enum
函数
PasswordScore
中找到的结果

有没有一种更简单的方法来确定你们使用过的密码强度

public partial class Form7 : Form
{
    public Form7()
    {
        InitializeComponent();
    }

    public enum PasswordScore
    {
        Blank = 0,
        VeryWeak = 1,
        Weak = 2,
        Medium = 3,
        Strong = 4,
        VeryStrong = 5
    }

    public static PasswordScore CheckStrength(string password)
    {
        int score = 0;
        if (password.Length == 0)
            return PasswordScore.Blank;
        if (password.Length < 4)
            return PasswordScore.VeryWeak;
        if (password.Length >= 8)
            score++;
        if (password.Length >= 12)
            score++;
        if (Regex.Match(password, @"/\d+/", RegexOptions.ECMAScript).Success)
            score++;
        if (Regex.Match(password, @"/[a-z]/", RegexOptions.ECMAScript).Success &&
            Regex.Match(password, @"/[A-Z]/", RegexOptions.ECMAScript).Success)
            score++;
        if (Regex.Match(password, @"/.[!,@,#,$,%,^,&,*,?,_,~,-,£,(,)]/", RegexOptions.ECMAScript).Success)
            score++;

        return (PasswordScore)score;
    }

    public void button1_Click(object sender, EventArgs e)
    {
        String password = textBox1.Text; // Substitute with the user input string
        PasswordScore passwordStrengthScore = Form7.CheckStrength(password);
        switch (passwordStrengthScore)
        {
            case PasswordScore.Blank:
            case PasswordScore.VeryWeak:
            case PasswordScore.Weak:
                // Show an error message to the user
                break;
            case PasswordScore.Medium:
            case PasswordScore.Strong:
            case PasswordScore.VeryStrong:
                // Password deemed strong enough, allow user to be added to database etc
                break;

        if (passwordStrengthScore == PasswordScore.Blank) { Result.Text = "Blank"; }
        if (passwordStrengthScore == PasswordScore.VeryWeak) { Result.Text = "Very Weak - FAIL"; }
        if (passwordStrengthScore == PasswordScore.Weak) { Result.Text = "Weak - FAIL"; }
        if (passwordStrengthScore == PasswordScore.Medium) { Result.Text = "Medium - Compliant"; }
        if (passwordStrengthScore == PasswordScore.Strong) { Result.Text = "Strong - Compliant"; }
        if (passwordStrengthScore == PasswordScore.VeryStrong) { Result.Text = "Very Strong - Compliant"; }

        }

    }
}
公共部分类表单7:表单
{
公共表格7()
{
初始化组件();
}
公共枚举密码分数
{
空白=0,
VeryWeak=1,
弱=2,
中等=3,
Strong=4,
VeryStrong=5
}
公共静态PasswordScore CheckStrength(字符串密码)
{
智力得分=0;
if(password.Length==0)
返回PasswordScore。为空;
如果(密码长度<4)
返回PasswordScore.VeryWeak;
如果(password.Length>=8)
分数++;
如果(password.Length>=12)
分数++;
if(Regex.Match(密码@/\d+/”,RegexOptions.ECMAScript.Success)
分数++;
if(Regex.Match(密码@/[a-z]/”,RegexOptions.ECMAScript)。成功&&
Regex.Match(密码@/[A-Z]/”,RegexOptions.ECMAScript.Success)
分数++;
if(Regex.Match(密码,@/.[…,@,#,$,%,^,&,*,?,,~,-,(,)]/”,RegexOptions.ECMAScript)。成功)
分数++;
返回(密码分数)分数;
}
公共无效按钮1\u单击(对象发送者,事件参数e)
{
String password=textBox1.Text;//替换为用户输入字符串
PasswordScore passwordStrengthScore=Form7.CheckStrength(密码);
交换机(密码强度核心)
{
大小写密码分数。空白:
case PasswordScore.VeryWeak:
大小写密码分数。弱:
//向用户显示错误消息
打破
大小写密码分数。中等:
case PasswordScore.Strong:
case PasswordScore.VeryStrong:
//密码足够强大,允许用户添加到数据库等
打破
如果(passwordStrengthScore==PasswordScore.Blank){Result.Text=“Blank”;}
如果(passwordStrengthScore==PasswordScore.VeryWeak){Result.Text=“非常弱-失败”}
如果(passwordStrengthScore==PasswordScore.Weak){Result.Text=“弱-失败”}
如果(passwordStrengthScore==PasswordScore.Medium){Result.Text=“Medium-Compliant”;}
如果(passwordStrengthScore==PasswordScore.Strong){Result.Text=“Strong-Compliant”}
如果(passwordStrengthScore==PasswordScore.VeryStrong){Result.Text=“非常强-兼容”}
}
}
}

结果总是很弱或没有,因为您案例中的正则表达式总是失败

请尝试修改您的正则表达式。例如:

if (Regex.Match(password, @"/\d+/", RegexOptions.ECMAScript).Success) 
修改为

if (Regex.Match(password, @"\d", RegexOptions.ECMAScript).Success)

修改为

Regex.Match(password, @"[a-z]", RegexOptions.ECMAScript).Success

这是工作代码

public partial class Form7 : Form
{
    public Form7()
    {
        InitializeComponent();
    }

    public enum PasswordScore
    {
        Blank = 0,
        VeryWeak = 1,
        Weak = 2,
        Medium = 3,
        Strong = 4,
        VeryStrong = 5
    }
    public static PasswordScore CheckStrength(string password)
    {
        int score = 0;

        if (password.Length == 0)
            return PasswordScore.Blank;
        if (password.Length < 4)
            return PasswordScore.VeryWeak;

        if (password.Length >= 8)
            score++;
        if (password.Length >= 12)
            score++;
        if (Regex.Match(password, @"\d", RegexOptions.ECMAScript).Success)
            score++;
        if (Regex.Match(password, @"[a-z]", RegexOptions.ECMAScript).Success &&
          Regex.Match(password, @"/[A-Z]/", RegexOptions.ECMAScript).Success)
            score++;
        if (Regex.Match(password, @"/.[!,@,#,$,%,^,&,*,?,_,~,-,£,(,)]/", RegexOptions.ECMAScript).Success)
            score++;

        return (PasswordScore)score;
    }


    public void button1_Click(object sender, EventArgs e)
    {

        String password = textBox1.Text; // Substitute with the user input string
        PasswordScore passwordStrengthScore = Form7.CheckStrength(password);

        switch (passwordStrengthScore)
        {
            case PasswordScore.Blank:
            case PasswordScore.VeryWeak:
            case PasswordScore.Weak:
                // Show an error message to the user
                break;
            case PasswordScore.Medium:
            case PasswordScore.Strong:
            case PasswordScore.VeryStrong:
                // Password deemed strong enough, allow user to be added to database etc
                break;
        }

        if (passwordStrengthScore == PasswordScore.Blank) { Result.Text = "Blank"; }
        if (passwordStrengthScore == PasswordScore.VeryWeak) { Result.Text = "Very Weak - FAIL"; }
        if (passwordStrengthScore == PasswordScore.Weak) { Result.Text = "Weak - FAIL"; }
        if (passwordStrengthScore == PasswordScore.Medium) { Result.Text = "Medium - Compliant"; }
        if (passwordStrengthScore == PasswordScore.Strong) { Result.Text = "Strong - Compliant"; }
        if (passwordStrengthScore == PasswordScore.VeryStrong) { Result.Text = "Very Strong - Compliant"; }



    }
公共部分类表单7:表单
{
公共表格7()
{
初始化组件();
}
公共枚举密码分数
{
空白=0,
VeryWeak=1,
弱=2,
中等=3,
Strong=4,
VeryStrong=5
}
公共静态PasswordScore CheckStrength(字符串密码)
{
智力得分=0;
if(password.Length==0)
返回PasswordScore。为空;
如果(密码长度<4)
返回PasswordScore.VeryWeak;
如果(password.Length>=8)
分数++;
如果(password.Length>=12)
分数++;
if(Regex.Match(密码@“\d”,RegexOptions.ECMAScript).Success)
分数++;
if(Regex.Match(密码@“[a-z]”,RegexOptions.ECMAScript)。成功&&
Regex.Match(密码@/[A-Z]/”,RegexOptions.ECMAScript.Success)
分数++;
if(Regex.Match(密码,@/.[…,@,#,$,%,^,&,*,?,,~,-,(,)]/”,RegexOptions.ECMAScript)。成功)
分数++;
返回(密码分数)分数;
}
公共无效按钮1\u单击(对象发送者,事件参数e)
{
String password=textBox1.Text;//替换为用户输入字符串
PasswordScore passwordStrengthScore=Form7.CheckStrength(密码);
交换机(密码强度核心)
{
大小写密码分数。空白:
case PasswordScore.VeryWeak:
大小写密码分数。弱:
//向用户显示错误消息
打破
大小写密码分数。中等:
case PasswordScore.Strong:
case PasswordScore.VeryStrong:
//密码足够强大,允许用户添加到数据库等
打破
}
如果(passwordStrengthScore==PasswordScore.Blank){Result.Text=“Blank”;}
如果(passwordStrengthScore==PasswordScore.VeryWeak){Result.Text=“非常弱-失败”}
如果(passwordStrengthScore==PasswordScore.Weak){Result.Text=“弱-失败”}
如果(passwordStrengthScore==PasswordScore.Medium){Result.Text=“Medium-Compliant”;}
如果(passwordStrengthScore==PasswordScore.Strong){Result.Text=“Strong-Compliant”}
如果(passwordStrengthScore==PasswordScore.VeryStrong){Result.Text=“非常强-兼容”}
}

int score=0;
上设置一个断点,然后使用F10键逐行遍历函数的其余部分。在“监视”窗口中的
score
上放置一块手表。您将看到发生的确切情况。如果这还不能清除它,请在
按钮1\u单击
中尝试相同的操作。在您的示例中没有任何更改结果的内容您希望如何更改它?@NetMage我删除了应用的if/then函数
public partial class Form7 : Form
{
    public Form7()
    {
        InitializeComponent();
    }

    public enum PasswordScore
    {
        Blank = 0,
        VeryWeak = 1,
        Weak = 2,
        Medium = 3,
        Strong = 4,
        VeryStrong = 5
    }
    public static PasswordScore CheckStrength(string password)
    {
        int score = 0;

        if (password.Length == 0)
            return PasswordScore.Blank;
        if (password.Length < 4)
            return PasswordScore.VeryWeak;

        if (password.Length >= 8)
            score++;
        if (password.Length >= 12)
            score++;
        if (Regex.Match(password, @"\d", RegexOptions.ECMAScript).Success)
            score++;
        if (Regex.Match(password, @"[a-z]", RegexOptions.ECMAScript).Success &&
          Regex.Match(password, @"/[A-Z]/", RegexOptions.ECMAScript).Success)
            score++;
        if (Regex.Match(password, @"/.[!,@,#,$,%,^,&,*,?,_,~,-,£,(,)]/", RegexOptions.ECMAScript).Success)
            score++;

        return (PasswordScore)score;
    }


    public void button1_Click(object sender, EventArgs e)
    {

        String password = textBox1.Text; // Substitute with the user input string
        PasswordScore passwordStrengthScore = Form7.CheckStrength(password);

        switch (passwordStrengthScore)
        {
            case PasswordScore.Blank:
            case PasswordScore.VeryWeak:
            case PasswordScore.Weak:
                // Show an error message to the user
                break;
            case PasswordScore.Medium:
            case PasswordScore.Strong:
            case PasswordScore.VeryStrong:
                // Password deemed strong enough, allow user to be added to database etc
                break;
        }

        if (passwordStrengthScore == PasswordScore.Blank) { Result.Text = "Blank"; }
        if (passwordStrengthScore == PasswordScore.VeryWeak) { Result.Text = "Very Weak - FAIL"; }
        if (passwordStrengthScore == PasswordScore.Weak) { Result.Text = "Weak - FAIL"; }
        if (passwordStrengthScore == PasswordScore.Medium) { Result.Text = "Medium - Compliant"; }
        if (passwordStrengthScore == PasswordScore.Strong) { Result.Text = "Strong - Compliant"; }
        if (passwordStrengthScore == PasswordScore.VeryStrong) { Result.Text = "Very Strong - Compliant"; }



    }