6 votes

Vérifiez si la chaîne contient des lettres en majuscules ou en minuscules

Je voudrais savoir s'il est possible de vérifier si une lettre d'une chaîne de caractères est en majuscule. Autrement dit, si toutes les lettres dans la chaîne sont en majuscules ou en minuscules. Exemple :

string a = "aaaaAaa";
string b = "AAAAAa";

if(??){ //Vérifier si toute la chaîne est en minuscules
   cout << "La chaîne a contient une lettre majuscule" << endl;
}
if(??){ //Vérifier si toute la chaîne est en majuscules
       cout << "La chaîne b contient une lettre minuscule" << endl;
}

Merci.

10voto

Slava Points 4119

Vous pouvez utiliser l'algorithme standard std::all_of

if( std::all_of( str.begin(), str.end(), islower ) { // tout en minuscules
}

4voto

dasblinkenlight Points 264350

Cela peut être facilement fait avec des expressions lambda :

if (std::count_if(a.begin(), b.end(), [](char ch) { return std::islower(ch); }) == 1) {
    // La chaîne contient exactement un caractère en minuscule
    ...
}

Cela suppose que vous voulez détecter exactement une lettre majuscule / minuscule, selon vos exemples.

4voto

KrzaQ Points 1

Utilisez all_of en concert avec isupper et islower:

if(all_of(a.begin(), a.end(), &::isupper)){ //Vérifie si toute la chaîne est en majuscules
    cout << "La chaîne a contient une lettre majuscule" << endl;
}
if(all_of(a.begin(), a.end(), &::islower)){ //Vérifie si toute la chaîne est en minuscules
    cout << "La chaîne b contient une lettre minuscule" << endl;
}

démonstration

Alternativement, utilisez count_if, si vous voulez vérifier le nombre de lettres correspondant à votre prédicat.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X