Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java7中的开关忽略大小写_Java_Switch Statement_Java 7 - Fatal编程技术网

Java7中的开关忽略大小写

Java7中的开关忽略大小写,java,switch-statement,java-7,Java,Switch Statement,Java 7,我正在做一个关于Java7新特性的POC。我有在switch语句中使用字符串的代码,它可以工作。我想使它的工作不区分大小写也。有没有办法在字符串上使用ignoreCase签出 package com.java.j7; public class Test { final private String _NEW ="NEW"; final private String _PENDING = "PENDING"; final private String _CLOSED =

我正在做一个关于Java7新特性的POC。我有在switch语句中使用字符串的代码,它可以工作。我想使它的工作不区分大小写也。有没有办法在字符串上使用ignoreCase签出

package com.java.j7;

public class Test {
    final private String _NEW ="NEW";
    final private String _PENDING = "PENDING";
    final private String _CLOSED = "CLOSED";
    final private String _REJECTED ="REJECTED";

public static void main(String... strings){

    Test j = new Test();
    j.processItem("new");
    j.processItem("pending");
    j.processItem("closed");
    j.processItem("rejected");

}

void processItem(String s){
    switch (s) {
    case _NEW:
        System.out.println("Matched to new");
        break;
    case _PENDING:
        System.out.println("Matched to pending");
        break;
    case _CLOSED:
        System.out.println("Matched to closed");
        break;
    case _REJECTED:
        System.out.println("Matched to rejected");
        break;

    default:
        System.out.println("Not matching any more");
        break;
    }

}
}

没有,但您可以打开
s.toUpperCase()
。因此:

switch (s.toUpperCase()) {
   //same as before
}
在我们挑剔的同时,您最好将英语区域中的大写字母改为oracle文档中的

将开关表达式中的字符串与与每个大小写标签关联的表达式进行比较,就像正在使用该方法一样

你可以用

switch(s.toUpperCase()){
...
.....
}
另见


在oracle文档的交换机示例中使用字符串


在本例中,我建议使用
s.toUpperCase
,因为匹配项是大写的;)我最初也包含了将常量小写的代码,但是是的,大写现在不太管用了,我更喜欢
Locale.ROOT
在这种情况下记录这些硬编码常量并不是真正的英国文化问题。它是在Java6中添加的。顺便说一句,今天有比土耳其语更多的地方有特殊情况匹配行为。
 public class StringSwitchDemo {

        public static int getMonthNumber(String month) {

            int monthNumber = 0;

            if (month == null) {
                return monthNumber;
            }

            switch (month.toLowerCase()) {
                case "january":
                    monthNumber = 1;
                    break;
                case "february":
                    monthNumber = 2;
                    break;
                case "march":
                    monthNumber = 3;
                    break;
                case "april":
                    monthNumber = 4;
                    break;
                case "may":
                    monthNumber = 5;
                    break;
                case "june":
                    monthNumber = 6;
                    break;
                case "july":
                    monthNumber = 7;
                    break;
                case "august":
                    monthNumber = 8;
                    break;
                case "september":
                    monthNumber = 9;
                    break;
                case "october":
                    monthNumber = 10;
                    break;
                case "november":
                    monthNumber = 11;
                    break;
                case "december":
                    monthNumber = 12;
                    break;
                default: 
                    monthNumber = 0;
                    break;
            }

            return monthNumber;
        }

        public static void main(String[] args) {

            String month = "August";

            int returnedMonthNumber =
                StringSwitchDemo.getMonthNumber(month);

            if (returnedMonthNumber == 0) {
                System.out.println("Invalid month");
            } else {
                System.out.println(returnedMonthNumber);
            }
        }
    }