A melhor maneira é usar uma expressão regular, um operador ternário e o .test()
método interno para strings.
Deixo para o Google os detalhes de expressões regulares e o método de teste para strings (são fáceis de encontrar), mas aqui vamos usá-lo para testar sua variável.
/[a-z]/i.test(your-character-here)
Isso retornará VERDADEIRO de FALSO, com base no fato de seu personagem corresponder ou não ao conjunto de caracteres na expressão regular. Nossa expressão regular verifica todas as letras az, /[a-z]/
independentemente do caso, graças à i
bandeira.
Portanto, um teste básico seria:
var theAnswer = "";
if (/[a-z]/i.test(your-character-here)) {
theAnswer = "It's a letter."
}
Agora precisamos determinar se é maiúsculo ou minúsculo. Portanto, se removermos o i
sinalizador de nossa expressão regular, nosso código acima testará as letras minúsculas az. E se mantivermos outra if
declaração na else
primeira if
, poderemos testar também maiúsculas usando AZ. Como isso:
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.";
}
E, caso não seja uma carta, podemos adicionar uma declaração final 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."
}
O código acima funcionaria. Mas é meio feio. Em vez disso, podemos usar um "operador ternário" para substituir nossas if-else
declarações acima. Os operadores ternários são apenas maneiras simples de codificar um if-else
. A sintaxe é fácil:
(statement-to-be-evaluated) ? (code-if-true) : (code-if-false)
E eles também podem ser aninhados um no outro. Portanto, uma função pode se parecer com:
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);
}
O código acima parece bom, mas não funciona muito bem, porque se nosso caractere estiver em minúsculas, ele theAnswer
será definido como "" quando testar maiúsculas, então vamos aninhar:
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);
}
Isso vai funcionar muito bem! Mas não há necessidade de ter duas linhas separadas para definir a variável theAnswer
e depois devolvê-la. E devemos usá-lo let
e const
não var
(procure-os se não tiver certeza do porquê). Depois de fazer essas alterações:
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."));
}
E acabamos com um pedaço de código conciso e elegante. ;)