【问题标题】:How to ignore case when dealing with a variable in an if statement - Javascript如何在 if 语句中处理变量时忽略大小写 - Javascript
【发布时间】:2021-06-04 00:47:34
【问题描述】:

我是 Javascript 的完整初学者,并尝试使用尽可能简单的代码。在 if 语句中使用提示中的变量时,存在一些区分大小写的问题。这是有问题的代码。假设输入完全是“法语”,它可以完美运行

if (number => 1 && number <= 30) {
    var lang= prompt ("Which language do you want to translate into, French or German?");
}
while(lang != "French" && lang != "french" && lang != "FRENCH" && lang != "German" && lang != "german" && lang != "GERMAN" ) {
    alert("Only French or German is allowed");
    var lang= prompt ("Which language do you want to translate into, French or German?");
}   


    if (number == 1 && lang == "French") {
        alert("The translation is " +frenchNumbers[1]);
    }
    if (number == 2 && lang == "French") {
        alert("The translation is " +frenchNumbers[2]);
    }
    if (number == 3 && lang == "French") {
        alert("The translation is " +frenchNumbers[3]);
    }

如果用户要输入“法语”或“法语”,我希望“if”语句也能正常工作。我尝试使用下一段代码,但它从一开始就循环显示警报,这不是我想要的。例如,如果我要输入“3”和“FRENCH”,我会首先收到“1”和“2”的警报。

if (number == 1 && lang == "French" || lang == "french" || lang == "FRENCH") {
        alert("The translation is " +frenchNumbers[1]);
    }
    if (number == 2 && lang == "French" || lang == "french" || lang == "FRENCH") {
        alert("The translation is " +frenchNumbers[2]);
    }
    if (number == 3 && lang == "French" || lang == "french" || lang == "FRENCH") {
        alert("The translation is " +frenchNumbers[3]);
    }

我确信有一个简单的解决方法,尝试解决它有点疯狂,因为我查看的所有信息都远高于我的技能水平

任何帮助都会很棒

谢谢,布拉德

【问题讨论】:

  • 您可以在输入中使用字符串方法 .toLowerCase()(或 toUpperCase),并将其与大写或小写测试值进行比较。例如,lang.toLowerCase() === "french"
  • ^ 当您浏览文档时,您会看到页面左侧的导航显示了“字符串原型”实现的其他方法。在 Javascript 中,这意味着所有字符串都有可用的方法,例如示例 lang.toLowerCase()。绝对值得看看该类别中可用的其他东西,以及 Array 原型。大量有用的东西——MDN 应该是你学习 javascript API 的首选资源。
  • 如果您先将值转换为小写,这样您就不会调用该函数一百万次,那就更好了。像这样:let lang = prompt("French or German?").toLowerCase();
  • ^ 小心点......如果他们点击取消,那将是一个例外:)

标签: javascript if-statement variables prompt case-sensitive


【解决方案1】:

正如 Chris Baker 所解释的,您可以使用 .toLowerCase()。需要调整的代码如下。

while(lang.toLowerCase() != "french" && lang.toLowerCase() != "german") {
...
if (number == 1 && lang.toLowerCase() == "french") {
...

【讨论】:

  • while 循环不是必需的,顺便说一句,IF 可以解决问题,如果你想花哨的话,也可以使用 if(["french", "german"].includes(lang.toLowerCase())):p
  • @ChrisBaker - 噢……不错。对于较新的编码人员来说不太容易理解,但是对语言功能的使用非常好! :)
  • 非常感谢!超级快速的回复,这完美地解决了我的问题!如果用户希望输入“FRenCh”(无论出于何种愚蠢的原因),那么他们现在可以:) 我已经保存了你的评论@ChrisBaker,我不明白,但我会玩一玩,看看会发生什么它可以做到。再次感谢大家非常感谢! :)
  • @Brad - Chris 的评论可以解释如下。 ["french", "german"] 是一个数组,可以是任何硬编码数组,例如 this 或包含数组的变量。 .includes(param) 是一个数组函数,用于测试数组是否有一个与param 匹配的值,以及您现在理解的lang.toLowerCase()。 :)
猜你喜欢
  • 1970-01-01
  • 2017-04-21
  • 2014-03-04
  • 1970-01-01
  • 2019-12-31
  • 1970-01-01
  • 2013-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多