我正在尝试获取大写字母、小写字母或数字的输入,并输出输入是这三个字符之一还是特殊字符。当我输入大写或小写字母时,程序能够识别差异,但是当我输入数字或特殊字符时,它总是返回大写字母。
let upperLowerNumber = prompt("Please enter either an uppercase letter, a lower case letter or a number:");
if(upperLowerNumber === upperLowerNumber.toUpperCase()){
console.log(`${upperLowerNumber} is an uppercase letter.`);
}
else if(upperLowerNumber === upperLowerNumber.toLowerCase()){
console.log(`${upperLowerNumber} is a lowercase letter.`);
}
else if(upperLowerNumber == Number.isInteger(upperLowerNumber)){
console.log(`${upperLowerNumber} is a number.`);
}
else {
console.log(`${upperLowerNumber} is not a letter or number.`);
}
Number.isInteger() 方法返回一个布尔值,指示给定值是否为整数,但仅当该值已经是数字时才有效。在您的例子中,upperLowerNumber 变量包含一个字符串值,因此 Number.isInteger() 检查将始终失败。
要检查输入是否为数字,可以使用 isNaN() 函数,如果输入不是数字,该函数返回 true。这是您的代码的更新版本:
let upperLowerNumber = prompt("Please enter either an uppercase letter, a lower case letter, a number, or a symbol:");
if (!isNaN(upperLowerNumber)) {
console.log(`${upperLowerNumber} is a number.`);
}
else if (/[^a-zA-Z]/.test(upperLowerNumber)) {
console.log(`${upperLowerNumber} is an symbol.`);
}
else if (upperLowerNumber === upperLowerNumber.toUpperCase()) {
console.log(`${upperLowerNumber} is an uppercase letter.`);
}
else if (upperLowerNumber === upperLowerNumber.toLowerCase()) {
console.log(`${upperLowerNumber} is a lowercase letter.`);
}