Java switch-case 语句中不区分大小写的匹配

我想知道是否有一种方法可以在java switch case语句中执行不区分大小写的匹配。默认实现区分大小写。请参阅下面的示例。

public class SwitchCaseTest {

    /**
     * @param args
     */
     public static void main(String[] args) {

        switch ("UPPER") {
            case  "upper" :
                System.out.println("true");
                break;

            default:
                System.out.println("false");
                break;
        }
    }
}

所以上面的语句作为输出返回。我正试图让它像这样为不区分大小写的匹配工作。我试图将字符串文本转换为小写,然后进行比较。但无法这样做。falseString.equalsIgnoreCase()


答案 1

如果你想这样做:只需确保输入数据全部小写,并使用小写字母...

switch ("UPPER".toLowerCase()) {
case  "upper" :

....

本地化问题

此外,古老的本地化问题再次袭来,也困扰着这件事......例如,在土耳其语区域设置中,大写对应项不是 ,而是 ...作为回报,不是转换为 ,而是一个“无点 i”:。不要小看这一点,这可能是一个致命的错误......iIİIiı


答案 2

您尝试将所有内容设为大写或小写

String str = "something".toUpperCase();
switch(str){
case "UPPER":
}

String str = "something".toLowerCase();
swtich(str){
case "lower":
}

或者更好地使用枚举(请注意,这只能从Java 7中实现)

enum YourCases {UPPER1, UPPER2} // cases.
YourCases c = YourCases.UPPER1; // you will probably get this value from somewhere
switch(c){
case YourCases.UPPER1: ....
break;
case YourCases.UPPER2: ....
}