Ganti abaikan huruf besar-kecil di Java 7

Saya melakukan POC pada fitur baru Java 7. Saya memiliki kode untuk menggunakan String dalam pernyataan switch dan berhasil. Saya ingin membuatnya berfungsi jika tidak sensitif juga. Apakah ada cara untuk memeriksa dengan mengabaikanCase di String?

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

}
}

person CHowdappaM    schedule 28.10.2013    source sumber


Jawaban (3)


tidak, tapi Anda dapat mengaktifkan s.toUpperCase(). Jadi:

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

dan sementara kami melakukan nitpicking, sebaiknya gunakan huruf besar dalam bahasa Inggris untuk menghindari masalah dengan bahasa Turki

person radai    schedule 28.10.2013
comment
Dalam hal ini saya akan menyarankan s.toUpperCase karena kecocokannya menggunakan huruf besar;) - person MadProgrammer; 28.10.2013
comment
Saya awalnya menyertakan kode yang menurunkan konstanta juga, tapi ya, huruf besar kurang berfungsi - person radai; 28.10.2013
comment
Saat ini, saya lebih memilih Locale.ROOT dalam kasus ini untuk mendokumentasikan fakta bahwa konstanta hard-code ini sebenarnya bukan masalah budaya Inggris. Itu ditambahkan di Java 6. Omong-omong, saat ini ada lebih banyak lokal daripada bahasa Turki dengan perilaku pencocokan kasus khusus. - person Holger; 28.10.2013

menggunakan String di switch Contoh dari dokumen Oracle Menggunakan String di Pernyataan switch

 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);
            }
        }
    }
person Deepak Odedara    schedule 28.10.2013

Dari dokumen Oracle beralih dengan string

String dalam ekspresi switch dibandingkan dengan ekspresi yang terkait dengan setiap label kasus seolah-olah String#equals sedang digunakan.

Anda dapat gunakan

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

Lihat juga

person Aniket Kulkarni    schedule 28.10.2013