Java脚本中的Switch语句
Switch Statement in Javascript
有人能帮我吗?
这似乎不起作用:
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
系列:
var numCharCode = parseInt(charCode, 10); // Always best to include the radix argument
if (numCharCode >= 65 && numCharCode <=90) { //UPPERCASE
alert("UP");
}
else if (numCharCode >= 97 && numCharCode <=122) { //LOWERCASE
alert("LO");
}
else if (numCharCode >= 48 && numCharCode <=57) { //NNUMBERS
alert("NUM");
}
(首先总是假设charCode
真的是一个字符串。名称表明它已经是一个数字了。)
离题:你的逻辑是以英语为中心的(即使是英语,在我们从其他语言复制的单词上也会失败,比如"天真")。如果可以的话,那就太好了,但如果不行,你会想更多地研究如何以语言中立的方式可靠地确定角色的大小写。更多信息请点击StackOverflow。
[edit]让我们添加此免责声明:switch
的使用被视为EVIL或ABUSIVE。Javascript的一些门徒也认为兄弟会的使用是一个主要的SIN。所以要小心使用它们,因为地狱可能在等着你,所以福音是这样说的。
您可以像这样使用switch
1:
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
}
它相当笨重。如果从event.keyCode
派生出charCode
,则不必使用parseInt
。如果您需要使用parseInt
,不要忘记提供基数,或者更好的是,使用Number
转换为数字。
无论如何,使用三元是一种替代方法:
alert( charCode >= 65 && charCode <= 90
? 'UP'
: charCode >= 97 && charCode <= 122
? 'LO'
: charCode >= 48 && charCode <= 57
? 'NUM'
: 'OTHER'
);
[edit]让我们看看下面的替代方案是否能满足Javascript程序员的要求。。。
另一种选择是使用具有源自keyCode
:的字符的RegExp
var chr = String.fromCharCode(charCode),
alertval = /[a-z]/.test(chr) ? 'LO'
: /[A-Z]/.test(chr) ? 'UP'
: /[0-9]/.test(chr) ? 'NUM'
: 'OTHER';
alert(alertval);
作为最后一种选择(伙计,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语句:在您的示例中,它在parseInt(charCode)(应该是整数)和布尔表达式值之间执行(value and type,"===")比较,例如case语句返回的值。使用和IF链,如下所示(假设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"函数,因此,如果您的charcode来自密钥事件,则可以使用相反的chr(keyCode)函数来获得已具有数值的密钥代码的字符串(字符)值。我希望它有帮助:)
这里不要使用switch-这不是正确的语法,charCode是int,所以不需要解析int-it-
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");
更新:怎么样来自CharCode
var char = String.fromCharCode(charCode)
if (/[a-z]/.test(char)) alert("Lower");
else if (/[A-Z]/.test(char)) alert("Upper");
else if (/[0-9]/.test(char)) alert("Numbers");
http://jsfiddle.net/mplungjan/v65Xc/
我相信有人可以把它放在一个对象中或使用原型:)
请访问本网站了解与您的问题相关的功能和解释。很抱歉,它们都没有考虑到与"ï"或"ö"等非ascii字符相关的问题http://javascript.about.com/library/blvalid02.htm
- switch语句中的Javascript作用域
- switch语句中出错,Javascript
- 使用 switch 语句更改页面正文
- Javascript-尝试使用switch语句
- 如何将这个简单的switch语句重写得更简洁
- Js提示:“;期望一个赋值或函数调用,而看到一个表达式“;,Switch语句
- Switch语句比较用户输入的Javascript
- 使用 Javascript switch 语句,如何计算数组中元素的数量(仅数字)
- 为什么这个switch语句没有像预测的那样运行
- switch语句中的数字比较失败
- javascript switch语句/case表达式
- 为什么这个 JavaScript switch 语句(在 for 循环内)保留了上一次迭代的值
- jQuery窗口'hashchange'switch语句效率
- 如何在switch语句中使用NaN大小写
- 范围的Switch语句不起作用
- 带有输入文本的 JavaScript switch 语句
- 使用Javascript switch语句在DIV中显示HTML表
- Switch语句jQuery不适用于单选按钮值
- JavaScript switch 语句只执行默认的情况
- Angular JS扩展了if或switch语句