这是我的作业,编辑了它:
某些网站对密码规定了某些规则。编写一个函数来检查字符串是否是有效密码。假设密码规则如下:
编写一个C#程序,提示用户输入密码,如果遵循规则则显示有效密码,否则显示无效密码
这就是我现在所做的:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Please enter a Password: ");
String password = Console.ReadLine();
if (isValid(password))
{
Console.WriteLine("Valid Password");
}
else
{
Console.WriteLine("Invalid Password");
}
}
public static bool isValid(String password)
{
if (password.Length < 8)
{
return false;
}
else
{
char c;
int count = 1;
for (int i = 0; i < password.Length - 1; i++)
{
c = password[i];
if (!Char.IsLetterOrDigit(c))
{
return false;
}
else if (Char.IsDigit(c))
{
count++;
if (count < 2)
{
return false;
}
}
}
}
return true;
}
}
但是有一个问题我找不到
答案 0 :(得分:0)
我认为这更像是你在寻找的东西:
static void Main(string[] args)
{
Console.WriteLine("Please enter a Password: ");
var password = Console.ReadLine();
Console.WriteLine(IsValid(password) ? "Valid Password" : "Invalid Password");
Console.ReadLine();
}
public static bool IsValid(string password)
{
var charactersInPassword = password.ToCharArray();
if (charactersInPassword.Length < 8) return false;
if (charactersInPassword.Any(character => !char.IsLetterOrDigit(character)))
return false;
var numberOfDigits = charactersInPassword.Count(char.IsDigit);
return numberOfDigits >= 2;
}
如果您对编程感兴趣,我建议您自己编写一个好的代码分析工具。我不知道任何开发人员没有Resharper / Productivity电动工具等等。它将帮助您编写更好的代码,减少冗余。对字符串等使用内置的.net功能(如ToCharArray)也更好。你可能已经被教过使用:
for (int i = 0; i < password.Length - 1; i++)
写一些可以写得更清晰,更容易的东西是一种漫长而烦人的方式,例如:
foreach (var characterInPassword in password.ToCharArray())
另外,我知道你不是用Python编写的,但值得一读:https://www.python.org/dev/peps/pep-0020/。这是一个快速阅读,它可以让您在编写代码时处于正确的状态。