Проверьте, есть ли строка в верхнем, нижнем регистре и номере

Я хочу проверить, есть ли в моей строке "Верхний регистр", "Нижний регистр" и "Номер"

string myString = "Hello123";

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

Ответ 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

Как насчет?

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

Ответ 4

Для достижения цели, классический способ, отличный от 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 нуждаются в трех перечислениях.

Ответ 5

Мы можем использовать метод расширения для буквенно-цифровых символов, например, ниже

(Также мы можем использовать другой метод расширения для 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

  }