Comment puis-je tester si une lettre dans une chaîne est en majuscule ou en minuscule en utilisant JavaScript ?
N'obtiendrez-vous pas le même résultat erroné si le caractère n'est ni numérique ni alphabétique, comme la ponctuation ?
Comment puis-je tester si une lettre dans une chaîne est en majuscule ou en minuscule en utilisant JavaScript ?
La réponse de josh et maleki retournera vrai sur les majuscules et les minuscules si le caractère ou la chaîne entière est numérique. ce qui fait que le résultat est faux. exemple utilisant josh
var character = '5';
if (character == character.toUpperCase()) {
alert ('upper case true');
}
if (character == character.toLowerCase()){
alert ('lower case true');
}
une autre solution consiste à tester d'abord s'il s'agit d'un chiffre, puis à tester s'il s'agit d'une majuscule ou d'une minuscule. exemple
var strings = 'this iS a TeSt 523 Now!';
var i=0;
var character='';
while (i <= strings.length){
character = strings.charAt(i);
if (!isNaN(character * 1)){
alert('character is numeric');
}else{
if (character == character.toUpperCase()) {
alert ('upper case true');
}
if (character == character.toLowerCase()){
alert ('lower case true');
}
}
i++;
}
N'obtiendrez-vous pas le même résultat erroné si le caractère n'est ni numérique ni alphabétique, comme la ponctuation ?
Le problème avec les autres réponses est que certains caractères, comme les chiffres ou les signes de ponctuation, renvoient également la réponse vraie lorsqu'on vérifie la présence de minuscules ou de majuscules.
J'ai trouvé que cela fonctionnait très bien pour lui :
function isLowerCase(str)
{
return str == str.toLowerCase() && str != str.toUpperCase();
}
Cela fonctionne pour la ponctuation, les chiffres et les lettres :
assert(isLowerCase("a"))
assert(!isLowerCase("Ü"))
assert(!isLowerCase("4"))
assert(!isLowerCase("_"))
Pour vérifier une lettre, il suffit de l'appeler en utilisant isLowerCase(str[charIndex])
Je ne sais pas pourquoi les autres réponses sont votées. C'est la seule solution à laquelle j'ai pensé également - la logique étant "le caractère a-t-il des variantes majuscules & minuscules ? Si c'est le cas, il faut retourner si c'est une majuscule ou une minuscule".
Désolé, mais il semble qu'il s'agisse d'un doublon d'un autre article. réponse d'un enfant de trois ans .
@GaurangTandon ouais 2 ans après avoir répondu j'ai remarqué cela aussi, mais je n'ai pas remarqué avant parce qu'il est enveloppé dans une boucle for, logging quelque chose à la console et en général pas un extrait de code réutilisable donc moi et (basé sur les votes sur cette réponse) beaucoup d'autres personnes ont naturellement juste sauté la réponse. C'est pourquoi je pense qu'il est bon d'avoir cette réponse comme un copier-coller rapide par opposition à l'autre réponse.
La meilleure réponse de loin, rapide, n'allouant aucune mémoire, ou transformant les données.
Ne fonctionne pas avec les caractères accentués (á, Á), les mutations des voyelles (öÖ, äÄ, üÜ) et les graphèmes (ß,) tho.
Ceci enregistrera true si le caractère est une lettre majuscule, et false dans tous les autres cas :
var letters = ['a', 'b', 'c', 'A', 'B', 'C', '(', ')', '+', '-', '~', '*'];
for (var i = 0; i<letters.length; i++) {
if (letters[i] === letters[i].toUpperCase()
&& letters[i] !== letters[i].toLowerCase()) {
console.log(letters[i] + ": " + true);
} else {
console.log(letters[i] + ": " + false);
}
}
Vous pouvez le tester ici : http://jsfiddle.net/Axfxz/ (utiliser Firebug ou autre).
for (var i = 0; i<letters.length; i++) {
if (letters[i] !== letters[i].toUpperCase()
&& letters[i] === letters[i].toLowerCase()) {
console.log(letters[i] + ": " + true);
} else {
console.log(letters[i] + ": " + false);
}
}
et ceci pour les minuscules :).
Malheureusement, il existe des lettres minuscules qui n'ont pas de variante majuscule (et probablement l'inverse aussi). Le "ß" allemand est une lettre minuscule, mais si vous lui appliquez la deuxième fonction, vous obtiendrez un faux.
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.
3 votes
Puis-je clarifier la question - vous voulez tester si une lettre particulière dans une chaîne est majuscule ou minuscule - ou voulez-vous tester si la chaîne entière contient une lettre qui est majuscule ou minuscule. si c'est la dernière, alors comment proposez-vous d'obtenir le résultat sans faire une boucle dans la chaîne et tester une lettre à la fois ?
3 votes
jsperf.com/isupper-comparison/5 Il y a quelques idées, et vous pouvez aussi les tester pour la vitesse.
2 votes
Idée n°4 (
[:upper:]
) est rapide et très cool sauf qu'il ne fonctionne pas, voir mon commentaire ci-dessous et mon corrigé jsperf.com/isupper-comparison/7 .8 votes
str == str.toUpperCase();
renvoie à vrai ou faux2 votes
str.toUpperCase() === str && str.toLowerCase() !== str
si vous ne voulez vraiment pas utiliser regExp.