简体   繁体   English

在java 7中切换忽略大小写

[英]Switch ignore case in java 7

I am doing a POC on Java 7 new features. 我正在做一个关于Java 7新功能的POC。 I have code to use String in switch statement and it works. 我有代码在switch语句中使用String,它的工作原理。 I want to make it work in case insensitive also. 我想让它在不区分大小写的情况下工作。 Is there a way to check out with ignoreCase on String? 有没有办法在String上检查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;
    }

}
}

no, but you could switch on s.toUpperCase() . 不,但你可以打开s.toUpperCase() so: 所以:

switch (s.toUpperCase()) {
   //same as before
}

and while we're nitpicking, you better upper-case things in the english locale to avoid issues with turkish 虽然我们在挑剔,但你最好在英语环境中使用大写的东西,以避免土耳其问题

using String in switch Example from oracle docs Using Strings in switch Statements 在交换机中使用String oracle docs中的示例在交换机语句中使用字符串

 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);
            }
        }
    }

From oracle docs switch with string 从oracle docs 切换到字符串

The String in the switch expression is compared with the expressions associated with each case label as if the String#equals method were being used. 将switch表达式中的String与每个case标签关联的表达式进行比较,就好像正在使用String#equals方法一样。

You can use 您可以使用

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

See also 也可以看看

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM