La mejor manera es usar una expresión regular, un operador ternario y el .test()método incorporado para cadenas.
Te dejo en Google los entresijos de las expresiones regulares y el método de prueba para cadenas (son fáciles de encontrar), pero aquí lo usaremos para probar tu variable.
/[a-z]/i.test(your-character-here)
Esto devolverá VERDADERO o FALSO en función de si su personaje coincide o no con el conjunto de caracteres en la expresión regular. Nuestra expresión regular verifica todas las letras az /[a-z]/independientemente de su caso gracias a la ibandera.
Entonces, una prueba básica sería:
var theAnswer = "";
if (/[a-z]/i.test(your-character-here)) {
theAnswer = "It's a letter."
}
Ahora necesitamos determinar si es mayúscula o minúscula. Entonces, si eliminamos la ibandera de nuestra expresión regular, nuestro código anterior probará las letras minúsculas az. Y si pegamos otra ifdeclaración en elsenuestra primera ifdeclaración, también podemos probar mayúsculas usando AZ. Me gusta esto:
var theAnswer = "";
if (/[a-z]/.test(your-character-here)) {
theAnswer = "It's a lower case letter."
} else if (/[A-Z]/.test(your-character-here)) {
theAnswer = "It's an upper case letter.";
}
Y en caso de que no sea una carta, podemos agregar una declaración final de else:
var theAnswer = "";
if (/[a-z]/.test(your-character-here)) {
theAnswer = "It's a lower case letter."
} else if (/[A-Z]/.test(your-character-here)) {
theAnswer = "It's an upper case letter.";
} else {
theAnswer = "It's not a letter."
}
El código anterior funcionaría. Pero es un poco feo. En cambio, podemos usar un "operador ternario" para reemplazar nuestras if-elsedeclaraciones anteriores. Los operadores ternarios son simplemente formas simples de codificar un if-else. La sintaxis es fácil:
(statement-to-be-evaluated) ? (code-if-true) : (code-if-false)
Y estos también pueden estar anidados uno dentro del otro. Entonces una función podría verse así:
var theAnswer = "";
function whichCase(theLetter) {
theAnswer = /[a-z]/.test(theLetter) ? "It's lower case." : "";
theAnswer = /[A-Z]/.test(theLetter) ? "It's upper case." : "";
return(theAnswer);
}
El código anterior se ve bien, pero no funcionará del todo, porque si nuestro carácter está en minúsculas, theAnswerse establece en "" cuando prueba en mayúsculas, así que vamos a anidarlas:
var theAnswer = "";
function whichCase(theLetter) {
theAnswer = /[a-z]/.test(theLetter) ? "It's lower case." : (/[A-Z]/.test(theLetter) ? "It's upper case." : "It's not a letter.");
return(theAnswer);
}
¡Eso funcionará genial! Pero no es necesario tener dos líneas separadas para configurar la variable theAnswery luego devolverla. Y deberíamos usar lety en constlugar de var(búsquelos si no está seguro de por qué) Una vez que hacemos esos cambios:
function whichCase(theLetter) {
return(/[A-Z]/.test(theLetter) ? "It's upper case." : (/[a-z]/.test(theLetter) ? "It's lower case." : "It's not a letter."));
}
Y terminamos con un código elegante y conciso. ;)