Javascript中的Switch语句

Javascript中的Switch语句,javascript,Javascript,有人能帮我吗 这似乎不起作用: switch (parseInt(charCode)) { case (charCode >= 65 && charCode <=90): //UPPERCASE alert("UP"); break; case (charCode >= 97 && charCode <=122): //LOWERCASE

有人能帮我吗

这似乎不起作用:

switch (parseInt(charCode))
    {
        case (charCode >= 65 && charCode <=90): //UPPERCASE
            alert("UP");
        break;

        case (charCode >= 97 && charCode <=122): //LOWERCASE
            alert("LO");
        break;

        case (charCode >= 48 && charCode <=57): //NNUMBERS
            alert("NUM");
        break


    }

谢谢

案例必须是单个值,而不是表达式。如果需要使用表达式,请使用If-else-If系列:

首先总是假设charCode实际上是一个字符串。名字表明它已经是一个数字了

离题:你的逻辑是以英语为中心的,即使是英语,在我们从其他语言(如naïve)抄袭的单词上也是失败的。如果可以的话,很好,但如果不行,你会想更多地了解如何以语言中立的方式可靠地确定角色的大小写。这里是StackOverflow。

不要在这里使用-它的语法不正确,charCode是int,因此不需要解析int

    if (charCode >= 65 && charCode <=90) //UPPERCASE
        alert("UP");
    else if (charCode >= 97 && charCode <=122) //LOWERCASE
        alert("LO");
    else if (charCode >= 48 && charCode <=57) // NUMBERS
        alert("NUM");
我相信有人可以将其放入对象或使用原型:

[edit]让我们添加以下免责声明:使用开关被视为邪恶或滥用。一些JavaScript的信徒也认为使用TrnAs是一个主要的罪过。所以要小心使用它们,因为福音是这样说的,它可能会等着你

您可以使用如下开关1:

[编辑]让我们看看以下替代方案是否能满足Javascript程序员教会的要求

另一种选择是使用带有从键码派生的字符的RegExp:

作为最后一个选择,javascript是如此的通用!我提出:

var check = String.fromCharCode(charCode)
             .replace(/([a-z])|([A-Z])|([0-9])|(.+)/,
                function(a,b,c,d) {
                  return b ? 'LO' : c ? 'UP' : d ? 'NUM' : 'OTH';
             });

1关于这个“技巧”

你不应该认为Javascript使用ASCII字符表的假设是正确的,它不是使用UTF8吗?因此,与其进行数值比较,不如使用字符串值比较。 您不应该以这样的方式使用switch语句:在您的示例中,它执行值和类型,==parseIntcharCode(应该是整数)和布尔表达式值(例如case语句返回的值)之间的比较。 使用和IF-chain,假设charCode仍然是字符串值,如下所示:

if (charCode >= 'A' && charCode <='Z') { //UPPERCASE
            alert("UP");
} else if (charCode >= 'a' && charCode <='z') { //LOWERCASE
            alert("LO");
        break;
} else if (charCode >= '0' && charCode <='9'): //NNUMBERS
            alert("NUM");
}
对于字符的ASCII数值,请使用Javascript asc函数,因此,如果您的字符代码来自某个键事件,则可以使用反向,即chrkeyCode函数,以获取已经是数字的键代码的字符串字符值。
我希望它能有所帮助:

请访问此网站,了解与您的问题相关的功能和说明。抱歉,但它们都没有考虑与非ascii字符(如“ï”或“ö”)相关的问题

所有语法错误当前它做什么?你想要实现什么?parseIntcharCode中有什么?尽管您混合了if和switch语句:switch只能用于检查特定值,而不是范围。阅读本文了解更多信息:嗨,charCode是一个int,swith是要使用的确切语法,而不是一个丑陋的if-else字符串。@thebounder:如果charCode是一个int,为什么要调用parseInt?我给出的示例中只有三个。帮助!if/[a-z]/.testchar alertLower;else if/[A-Z]/.testchar alertUpper;else if/[0-9]/.testchar警报号;不通过缺少的端部支架。谢谢修正了什么。。。A.可怕的…想法尽管如此,它还是应该起作用的,案例是按顺序评估的。谢谢,我记得这是怎么做的。这是一种完全正确的方法,比一连串丑陋的if-else语句要好得多。@thebounder:丑陋和美丽一样,都在旁观者的眼里-我现在记得我忘记了,我很高兴我真的忘记了。@all:这就是为什么我提供了一个替代方案~我记得自己是怎么做的:charCode=parseIntcharCode;切换为真{case charCode>=65&&charCode=97&&charCode=48&&charCode事实上,由于语言的形成,一些原始英语单词的定义甚至很棘手。我想到了百科全书。@Tomalek:Encyclopdia是从希腊文复制过来的,间接地通过拉丁语,这就是为什么它有灰烬双元音,这在翻译中相当常见从希腊字母到拉丁字母的单词的迭代。英语就是这样一个词。:-但是,确切地说,这是一个英语单词,已经有近500年的历史了,在大多数时间里它是用双元音拼写的。我想你需要做String.fromCharCode这里你不应该认为是真的关于Javascript的假设使用ASCII字符t它不是使用UTF8吗?实际上它使用UTF-16。但在这种情况下这并不重要。ASCII和Unicode在设计上共享相同的前127个值。更大的问题是,这是一个非常幼稚的大写和小写定义,很容易失败。例如,看最后一句话,是不是幼稚的小写?我想是的,我“我很确定法国人会这么想,但这段代码不会。Nave是一个英语单词,我们刚才从法语中复制了它。@TjCrowder:还有非借来的百科全书dia vs百科全书dia。如何在键盘上键入?我剪切并粘贴了它。”
switch (true) {
   case (parseInt(charCode) >= 65 && parseInt(charCode) <=90): //UPPERCASE
       alert("UP");
       break;
   case (parseInt(charCode) >= 97 && parseInt(charCode) <=122): //LOWERCASE
       alert("LO");
       break;
   case (parseInt(charCode) >= 48 && parseInt(charCode) <=57): //NNUMBERS
       alert("NUM");
       break;
   default: break
}
alert( charCode >= 65 && charCode <= 90 
        ? 'UP'
        : charCode >= 97 && charCode <= 122
        ? 'LO'
        : charCode >= 48 && charCode <= 57 
        ? 'NUM'
        : 'OTHER'
);
var chr      = String.fromCharCode(charCode),
    alertval =    /[a-z]/.test(chr) ?  'LO'
                : /[A-Z]/.test(chr) ?  'UP'
                : /[0-9]/.test(chr) ?  'NUM'
                : 'OTHER';
    alert(alertval);
var check = String.fromCharCode(charCode)
             .replace(/([a-z])|([A-Z])|([0-9])|(.+)/,
                function(a,b,c,d) {
                  return b ? 'LO' : c ? 'UP' : d ? 'NUM' : 'OTH';
             });
if (charCode >= 'A' && charCode <='Z') { //UPPERCASE
            alert("UP");
} else if (charCode >= 'a' && charCode <='z') { //LOWERCASE
            alert("LO");
        break;
} else if (charCode >= '0' && charCode <='9'): //NNUMBERS
            alert("NUM");
}