检查字符串是否包含大写,小写和数字

时间:2014-12-10 13:22:21

标签: c# string if-statement

我想检查一下我的字符串是否有大写& LowerCase&编号

string myString = "Hello123";

if (myString haveUppercase && myString haveLowerCase && myString haveNumber)
{
    this.hide();
}
else
{
    MessageBox.Show("Error!");
}

7 个答案:

答案 0 :(得分:39)

您可以将char方法与LINQ

一起使用
if (myString.Any(char.IsUpper) &&
    myString.Any(char.IsLower) &&
    myString.Any(char.IsDigit))

答案 1 :(得分:8)

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

答案 2 :(得分:7)

怎么样?

if(myString.Any(char.IsLower) && myString.Any(char.IsUpper) && myString.Any(char.IsDigit))

答案 3 :(得分:5)

为了完整,经典,非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方法需要三个枚举。

答案 4 :(得分:1)

我们可以使用字母数字扩展方法作为下面的组

  

(我们也可以使用不同的扩展方法来实现Small Letters,Capital   如果我们需要,则单独的字母和数字)

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

  }

答案 5 :(得分:1)

#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

我希望你有个主意。感谢

答案 6 :(得分:0)

您似乎正在尝试进行一些强密码验证。 虽然有很多方法可以给这只猫剥皮,但我更喜欢将这些代码包装到可重用的扩展方法中,这样以后的工作就变得微不足道了。使用扩展方法时,您还可以避免使用 RegEx,因为它比直接字符检查慢。我喜欢使用 Extensions.cs NuGet 包中的扩展。它使这项检查变得如此简单:

  1. https://www.nuget.org/packages/Extensions.cs 包添加到您的项目中。
  2. 在代码顶部添加“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!");
}