【问题标题】:using else if statements to check for uppercase, lowercase, or number character [closed]使用 else if 语句检查大写、小写或数字字符 [关闭]
【发布时间】:2021-09-07 00:31:30
【问题描述】:

我一直在尝试解决这个问题以检查字符是大写、小写还是数字,我已经能够为大写和小写做到这一点,但我不能为数字做到这一点.

let letterOrNumber = prompt("Enter an uppercase letter, a lowercase letter or a number");

let upperCaseLetter = letterOrNumber.toUpperCase();
let lowerCaseLetter = letterOrNumber.toLowerCase();
let userNumber = parseInt(letterOrNumber)

if (letterOrNumber === upperCaseLetter) {
    console.log(letterOrNumber + " is an uppercase letter.");
}

else if (letterOrNumber === lowerCaseLetter) {
    console.log(letterOrNumber + " is a lowercase letter.");
}

else if (letterOrNumber === userNumber) {
    console.log(letterOrNumber + " is a number.");
}

else {
    console.log(letterOrNumber + " is not a letter or number");
}

【问题讨论】:

标签: javascript if-statement numbers uppercase


【解决方案1】:

对于单个字符串字符,您可以使用 !isNaNnot 不是数字)。
另外,请确保在匹配 Alpha 字符之前先去掉 Numerics

const letterOrNumber = prompt("Enter an uppercase letter, a lowercase letter or a number");

const upperCaseLetter = letterOrNumber.toUpperCase();
const lowerCaseLetter = letterOrNumber.toLowerCase();
const isNum = !isNaN(letterOrNumber);

if (isNum) {
  console.log(letterOrNumber + " is a number.");
} else if (letterOrNumber === upperCaseLetter) {
  console.log(letterOrNumber + " is an uppercase letter.");
} else if (letterOrNumber === lowerCaseLetter) {
  console.log(letterOrNumber + " is a lowercase letter.");
} else {
  console.log(letterOrNumber + " is not a letter or number");
}

【讨论】:

  • "_ 是一个大写字母。"似乎不是正确的输出。
【解决方案2】:

使用isNaN判断是否为数字。

let letterOrNumber = prompt("Enter an uppercase letter, a lowercase letter or a number");

let upperCaseLetter = letterOrNumber.toUpperCase();
let lowerCaseLetter = letterOrNumber.toLowerCase();


if (!isNaN(letterOrNumber)) {
  console.log(letterOrNumber + " is a number.");
} else if (letterOrNumber === upperCaseLetter) {
  console.log(letterOrNumber + " is an uppercase letter.");
} else if (letterOrNumber === lowerCaseLetter) {
  console.log(letterOrNumber + " is a lowercase letter.");
} else {
  console.log(letterOrNumber + " is not a letter or number");
}

【讨论】:

    【解决方案3】:

    除了其他答案之外,我还想指出,您的代码目前不适用于数字大小写的原因是因为您将字符串 letterOrNumberuserNumber 进行比较,这是一个数字。类型不匹配。因此,条件为 false 并转到 else 分支。

    【讨论】:

    • 如果它走到那一步,这将是一个问题,但所有数字都是 OPs 代码的大写字母,因为数字字符没有大小写,第一个检查是大写。
    【解决方案4】:

    另一种方法是对match 大写字符、小写字符或数字使用正则表达式。此方法将捕获_ 之类的字符或Š 之类的带有变音符号的字符,并为它们适当地记录输出。

    function check(str = '') {
    
      const regex = /([A-ZÀ-ž])|([a-zà-ž])|([0-9])/;
      const match = str.match(regex);
    
      // `match` returns an array, so if it exists (has length)
      if (match) {
    
        // `slice` off the first element (which is the complete match)
        // and then find the index of the element which isn't undefined
        const index = match.slice(1).findIndex(el => el);
    
        // You can then log the result based on the index
        switch(index) {
          case 0: return 'Uppercase';
          case 1: return 'Lowercase';
          case 2: return 'Number';
        }
      }
    
      // Returns "none` if there is no match
      return 'None';
    
    }
    
    console.log(check('_'));
    console.log(check('1'));
    console.log(check('ž'));
    console.log(check('A'));
    console.log(check('z'));
    console.log(check('+'));
    console.log(check('/'));
    console.log(check('B'));
    console.log(check('Š'));
    console.log(check(undefined));

    【讨论】:

    • 当然标题是'using else if statements...'
    • Š 不是大写字母?
    猜你喜欢
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 2015-02-08
    • 2014-10-21
    相关资源
    最近更新 更多