检查字符串是否有大写、小写和数字
本文关键字:数字 字符串 是否 检查 | 更新日期: 2023-09-27 18:33:46
我想检查我的字符串是否有大写和小写和数字
string myString = "Hello123";
if (myString haveUppercase && myString haveLowerCase && myString haveNumber)
{
this.hide();
}
else
{
MessageBox.Show("Error!");
}
您可以将
char
的方法与 LINQ
一起使用:
if (myString.Any(char.IsUpper) &&
myString.Any(char.IsLower) &&
myString.Any(char.IsDigit))
if (myString.Any(ch => char.IsUpper(ch) &&
myString.Any(ch => char.IsLower(ch) &&
myString.Any(ch => char.IsDigit(ch))
{
this.hide();
}
else
{
MessageBox.Show("Error!");
}
为了完整起见,实现此目的的经典非 LINQ 方法:
public static bool HasUpperLowerDigit(string text)
{
bool hasUpper = false; bool hasLower = false; bool hasDigit = false;
for (int i = 0; i < text.Length && !(hasUpper && hasLower && hasDigit); i++)
{
char c = text[i];
if (!hasUpper) hasUpper = char.IsUpper(c);
if (!hasLower) hasLower = char.IsLower(c);
if (!hasDigit) hasDigit = char.IsDigit(c);
}
return hasUpper && hasLower && hasDigit;
}
它更有效,因为它只循环每个字符一次,而 LINQ 方法需要三个枚举。
怎么样?
if(myString.Any(char.IsLower) && myString.Any(char.IsUpper) && myString.Any(char.IsDigit))
我们可以将字母数字的扩展方法用作如下所示的组
(我们也可以为小写字母、大写字母使用不同的扩展方法 如果需要,请分别使用字母和数字)
static class StringExtension
{
public static bool IsAlphaNumeric(this string strToCheck)
{
Regex rg = new Regex(@"^[a-zA-Z0-9's,]*$");
return rg.IsMatch(strToCheck);
}
}
我们可以使用上面的扩展方法,如下所示:
{
string strValue = "vasanth";
strValue.IsAlphaNumeric(); //return true
string strValue1 = "vasanth!";
strValue.IsAlphaNumeric(); //return false
}
#region 检查是否有大写字母
string Mystring = "SimpleWordforExAmple";
char[] chars;
char ch;
int length = Mystring.Length;
int cnt;
int totalcntupper = 0;
chars = Mystring.ToCharArray(0, length);
Console.WriteLine("Sample words with capital letters : {0} ", Mystring);
for (cnt = 0; cnt < length;cnt ++)
{
ch = chars[cnt];
if (char.IsUpper(ch))
{
Console.WriteLine("Capital letter : #{0}", ch);
totalcntupper++;
}
}
Console.WriteLine("Count of capital letter(s) : # {0}", totalcntupper);
Console.ReadLine();
#endregion
我希望你有一个想法。谢谢
看起来您正在尝试进行一些强密码验证。虽然有很多方法可以给这只猫蒙皮,但我更喜欢将这些代码包装到可重用的扩展方法中,这使得它变得微不足道。 使用扩展方法时,您还可以避免使用正则表达式,因为它比直接字符检查慢。 我喜欢使用扩展.cs NuGet 包中的扩展。 它使此检查像以下一样简单:
- 将 https://www.nuget.org/packages/Extensions.cs 包添加到项目中。
- 将"
using Extensions;
"添加到代码的顶部。
您的示例代码将变得像以下一样简单:
string myString = "Hello123";
//if (myString haveUppercase && myString haveLowerCase && myString haveNumber)
if (myString.IsStrong(true, true, true, false))
//If you wanted to allow special characters and require 3 of the 4 it would simply be:
if (myString.IsStrong(3))
{
this.hide();
}
else
{
MessageBox.Show("Error!");
}