Je veux vérifier si ma chaîne a des majuscules, des minuscules et des nombres
string myString = "Hello123";
if (myString haveUppercase && myString haveLowerCase && myString haveNumber)
{
this.hide();
}
else
{
MessageBox.Show("Error!");
}
Vous pouvez utiliser les méthodes de char
avec 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!");
}
Que diriez-vous?
if(myString.Any(char.IsLower) && myString.Any(char.IsUpper) && myString.Any(char.IsDigit))
Par souci d’exhaustivité, la méthode classique , non-LINQ permettant d’atteindre cet objectif:
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;
}
Il est plus efficace car il boucle chaque caractère une seule fois alors que les approches LINQ nécessitent trois énumérations.
Nous pouvons utiliser la méthode d'extension pour Alphanumeric comme groupe comme ci-dessous
(Nous pouvons également utiliser une méthode d'extension différente pour les petites lettres, les majuscules Les lettres et les chiffres séparément si nous en avons besoin)
static class StringExtension
{
public static bool IsAlphaNumeric(this string strToCheck)
{
Regex rg = new Regex(@"^[a-zA-Z0-9\s,]*$");
return rg.IsMatch(strToCheck);
}
}
Nous pouvons utiliser la méthode d'extension ci-dessus comme ci-dessous:
{
string strValue = "vasanth";
strValue.IsAlphaNumeric(); //return true
string strValue1 = "vasanth!";
strValue.IsAlphaNumeric(); //return false
}
#region vérifie s'il y a une lettre majuscule
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
j'espère que tu as une idée. Merci