【问题标题】:Simplifying IF statement when comparing userInput from a prompt [duplicate]比较提示中的 userInput 时简化 IF 语句[重复]
【发布时间】:2015-03-05 06:30:53
【问题描述】:

我正在从头开始编写一个简单的 Rock, Paper, Scissors 程序,并且我有一个看起来臃肿的 IF 语句。我知道它可以被修剪,但我在任何地方都找不到答案。

我首先通过提示用户输入他们对此语句的响应来获得一个变量 userChoice:

var userChoice = prompt("Choose either Rock, Paper, or Scissors.");

我希望程序接受大写和非大写的响应(rock 或 Rock 将是有效的),并且我还想在用户的响应无效时提醒用户。

有没有办法在不写像我这样臃肿的 IF 语句的情况下接受非大写和大写的响应(rock 或 Rock)?

if (userChoice !== "Rock" && userChoice !== "rock") {
    alert("Invalid response.");
}

此 IF 语句已缩短。在我的实际代码中,IF 语句也用于比较纸和剪刀的非大写和大写版本。但是为了这个例子,我把所有的废话都省略了。

谢谢

【问题讨论】:

    标签: javascript if-statement prompt capitalization capitalize


    【解决方案1】:

    将用户输入 userChoice 转换为小写/大写,然后与小写字符串比较,如

    var userChoice = prompt("Choose either Rock, Paper, or Scissors.").toLowerCase();
    
    if (userChoice !== "rock") {
        alert("Invalid response.");
    }
    

    【讨论】:

    • 太棒了,所以从本质上讲,当我可以简单地用 .toLowerCase() 结束提示时,我编写了所需的代码的两倍。欣赏!
    【解决方案2】:

    与 Arun 的答案相同但更短,您可以使用 RegExpi 标志来忽略大小写:

    if (/rock/i.test(userChoice)) {
      ...
    }
    

    【讨论】:

    • 由于我是 javascript 新手,并且只接触过最基本的技术,因此我必须在实施正则表达式之前阅读它们,这样我才能清楚地了解它们的目的。感谢指导!
    • @JakeWiesler 是的,它们非常强大和有用,我想我会提醒您并包含指向 API 文档的链接,这样您就可以阅读其中的好处,享受!
    猜你喜欢
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 2010-09-13
    • 2017-04-11
    • 1970-01-01
    相关资源
    最近更新 更多