【问题标题】:Return "True" if all the characters in a string are "x" or "X" else return false如果字符串中的所有字符都是 \"x\" 或 \"X\" 则返回 \"True\" 否则返回 false
【发布时间】:2022-12-04 21:38:55
【问题描述】:

我正在看这个代码挑战:

完成函数 isAllX 判断整个字符串是否由小写 x 或大写 X 组成,如果是则返回 true,否则返回 false。

例子:

isAllX("Xx"); // true
isAllX("xAbX"); // false

以下是我的答案,但它是错误的。如果任何字符不是“x”或“X”,我希望完整字符串为“false”:

function isAllX(string) {
  for (let i = 0; i < string.length; i++) {
    if (string[i] === "x" || string[i] === "X") {
      console.log(true);
    } else if (string[i] !== "x" || string[i] !== "X") {
      console.log(false);
    }
  }
}

isAllX("xAbX");

【问题讨论】:

标签: javascript


【解决方案1】:

您的循环正在输出结果在每一个迭代。这有两个问题:

  1. 你应该只给输入的结果,所以不是在每次迭代中;目前您正在报告输入字符串中的每个字符。
  2. 您被要求返回布尔结果(假/真),不具有该功能打印某物。这应该留给调用者

    不过,您可以采用更简单的方法,首先将输入字符串全部转为小写。现在你只需要寻找“x”。然后取出所有的“x”,看看有没有剩下的东西。您可以检查结果字符串的 length 属性来决定返回值应该是 false 还是 true:

    function isAllX(string) {
      return string.toLowerCase().replaceAll("x", "").length == 0;
    }
    
    
    console.log(isAllX("xxXXxxAxx")); // false
    console.log(isAllX("xxXXxxXxx")); // true

    如果您熟悉正则表达式,您也可以使用 test 方法:

    function isAllX(string) {
      return /^x*$/i.test(string);
    }
    
    
    console.log(isAllX("xxXXxxAxx")); // false
    console.log(isAllX("xxXXxxXxx")); // true

【讨论】:

    【解决方案2】:

    您可以使用正则表达式来查找相同的内容。

    function allX(testString) {
      return /^x+$/i.test(testString);
    }
    
    console.log(allX("xxXX"));
    console.log(allX("xxAAAXX"));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 2015-05-13
      • 2014-04-12
      • 1970-01-01
      • 2015-05-02
      相关资源
      最近更新 更多