如何让JavaScript的switch函数兼容大小写不敏感的输入?
解决JavaScript Switch语句大小写不敏感匹配的问题
这问题太常见啦!JavaScript里字符串比较是大小写敏感的,所以你输入的'thu'和case里的'Thu'会被当成完全不同的字符串,导致匹配失败。搞定这个的核心思路就是:把用户输入和case中的字符串统一转换成相同的大小写格式,要么全大写要么全小写,这样就能忽略大小写差异正常匹配了。
方案一:提前转换输入字符串的大小写
先把用户输入的字符串转成大写(或小写),然后把case里的对应值也改成相同格式,代码修改后如下:
<html> <body> <script> var days = 'thu'; // 将输入字符串统一转为大写 days = days.toUpperCase(); switch(days) { case 'MON': document.write("Today is Monday"); break; case 'TUE': document.write("Today is Tuesday"); break; case 'WED': document.write("Today is Wednesday"); break; case 'THU': document.write("Today is Thursday"); break; case 'FRI': document.write("Today is Friday"); break; default: document.write("Weekend...!!!"); } </script> </body> </html>
方案二:在Switch表达式中直接转换
如果你不想修改原始的days变量,可以直接在switch的判断表达式里做大小写转换,这样更灵活:
<html> <body> <script> var days = 'thu'; // 直接在switch的判断逻辑里转换输入的大小写 switch(days.toUpperCase()) { case 'MON': document.write("Today is Monday"); break; case 'TUE': document.write("Today is Tuesday"); break; case 'WED': document.write("Today is Wednesday"); break; case 'THU': document.write("Today is Thursday"); break; case 'FRI': document.write("Today is Friday"); break; default: document.write("Weekend...!!!"); } </script> </body> </html>
补充说明
- 两种方案效果完全一致,选哪种看你需求:如果需要保留原始输入的字符串,方案二更合适;如果后续还要用到转换后的字符串,方案一更方便。
- 你也可以用
toLowerCase()代替toUpperCase(),只要case里的字符串也对应改成全小写就行(比如case 'mon'),逻辑是一样的。
内容的提问来源于stack exchange,提问作者Raza Khan
相关产品推荐
相关产品推荐

