如何将存储在 switch 语句内的变量中的大写转换为小写



这是我的javascript代码,它应该显示:Okay! Great choice We are working hard for your cake如果我输入cake 或Cake(注意 c 与大写字母(,但与cake一起工作得很好,但不能与Cake一起使用,pancake和大写 pPancake也是如此:

var make=prompt("Hey! What you are up to cake or pancake?");
switch(make){
case ("cake" || "Cake"):
console.log("Okay! Great choice  We are working hard for your cake");
break;
case ("pancake" || "Pancake"):
console.log("Okay! Great choice   We are working hard for your pancake");
break;
default:
console.log("Sorry we Only have cake or pancake to choose from.");
}

"cake" || "Cake"表达式的计算结果为 true,因为这两个字符串都是真实的。因此,当用户的输入与该值进行比较时,例如"cake" == true,它的计算结果为 true,因为用户的输入 ("cake"( 也是真实的。

要忽略用户输入的大小写,您可以在比较之前将其转换为小写(通过make.toLowerCase()(:

var make = prompt("Hey! What you are up to cake or pancake?");
switch (make.toLowerCase()) {
case "cake":
console.log("Okay! Great choice  We are working hard for your cake");
break;
case "pancake":
console.log("Okay! Great choice   We are working hard for your pancake");
break;
default:
console.log("Sorry we Only have cake or pancake to choose from.");
}

如果你不熟悉值或值的概念,你可以在这里阅读MDN的文档:https://developer.mozilla.org/en-US/docs/Glossary/Truthy https://developer.mozilla.org/en-US/docs/Glossary/falsy

如果左侧为 true 值,则||运算符的计算结果为左侧,否则计算为右侧。

所以"cake" || "Cake",因为"cake"是一个真值,所以意味着"cake"

因此case ("cake" || "Cake"):意味着case ("cake"):


如果要在交换机中有多个匹配项,请具有多个案例。

case ("cake"):
case ("Cake"):
// etc
break;

不变比较:

var make = prompt("Hey! What you are up to cake or pancake?");
if (make.localeCompare("cake".toUpperCase()) == -1) {
console.log("Okay! Great choice  We are working hard for your cake");
} else if (make.localeCompare("pancake".toUpperCase()) == -1) {
console.log("Okay! Great choice   We are working hard for your pancake");
} else {
console.log("Sorry we Only have cake or pancake to choose from.");
}

最新更新