16

我想知道是否有办法在 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;
        }
    }
}

所以上面的语句false作为输出返回。我正在尝试使其适用于不区分大小写的匹配String.equalsIgnoreCase()。我尝试将字符串文字都转换为小写,然后进行比较。但无法这样做。

4

5 回答 5

57

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

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

....

本地化问题

此外,老生常谈的本地化问题再次出现,也困扰着这件事......例如,在土耳其语区域设置中,大写对应的iis not I, but İ... 作为回报, the Iis 不是转换为i,而是“无点我”:ı。不要小看这一点,这可能是一个致命的错误......

于 2013-10-04T12:10:24.487 回答
3

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

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: ....
}
于 2013-10-04T12:23:22.227 回答
1

使用 switch 语句时,您必须使用“break;” 让它退出语句,所以只需使用两种情况,一种没有中断。

开关(选择)

        {

            case 'I':

            case 'i':

                //Insert a name

                System.out.print("Insert a name to add to the list: ");

                input.nextLine();

                name = input.nextLine();

                nameList.insert(name);

                System.out.println();

                break;

这样,如果输入“I”或“i”,两种情况将具有相同的结果。

于 2021-04-02T01:58:48.680 回答
0

尝试

switch ("UPPER".toUpperCase()) {
    case  "UPPER" :
于 2013-10-04T12:10:50.423 回答
0

为了避免必须使用 case 表达式来验证它是小写还是大写,我建议您使用以下内容:

String value = String.valueOf(userChoice).toUpperCase();

这有助于在 switch case 中进行评估之前将小写转换为大写。

于 2019-04-03T02:33:55.077 回答