【问题标题】:Check if string have uppercase, lowercase and number检查字符串是否有大写、小写和数字
【发布时间】:2015-02-08 17:07:30
【问题描述】:

我想检查我的字符串是否有大写 & 小写 & 数​​字

string myString = "Hello123";

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

【问题讨论】:

    标签: c# string if-statement


    【解决方案1】:

    您可以将char 的方法与LINQ 一起使用:

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

    【讨论】:

      【解决方案2】:
      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!");
          }
      

      【讨论】:

        【解决方案3】:

        为了完整起见,经典的,非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】:

          怎么样?

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

          【讨论】:

            【解决方案5】:

            我们可以使用字母数字的扩展方法作为组,如下所示

            (我们也可以对小写字母、大写字母使用不同的扩展方法 如果我们需要,字母和数字分开)

            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
            
              }
            

            【讨论】:

            • 某些语言,例如中文不区分大小写,因为它们是表意文字,如果这对您的软件很重要
            【解决方案6】:

            #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
            

            我希望你有一个想法。谢谢

            【讨论】:

              【解决方案7】:

              您似乎正在尝试进行一些强密码验证。 虽然有很多方法可以给这只猫换皮,但我更喜欢将这些代码包装到可重用的扩展方法中,这样以后做起来就很简单了。使用扩展方法时,您还可以避免使用 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!");
              }
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2018-02-03
                • 1970-01-01
                • 2020-10-21
                • 1970-01-01
                • 2020-06-13
                • 2012-02-06
                • 2020-07-16
                • 1970-01-01
                相关资源
                最近更新 更多