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"; }
}