สลับตัวพิมพ์ละเว้นใน java 7

ฉันกำลังทำ POC บนคุณสมบัติใหม่ของ Java 7 ฉันมีรหัสเพื่อใช้ String ในคำสั่ง switch และใช้งานได้ ฉันต้องการทำให้มันใช้งานได้ในกรณีที่ไม่สำคัญเช่นกัน มีวิธีตรวจสอบด้วยignCase on 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 แหล่งที่มา


คำตอบ (3)


ไม่ แต่คุณสามารถเปิด s.toUpperCase() ได้ ดังนั้น:

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

และในขณะที่เรากำลังจู้จี้จุกจิก คุณควรใช้ตัวพิมพ์ใหญ่ในภาษาภาษาอังกฤษจะดีกว่าเพื่อ หลีกเลี่ยงปัญหา กับภาษาตุรกี

person radai    schedule 28.10.2013
comment
ในกรณีนี้ ฉันขอแนะนำ s.toUpperCase เนื่องจากการจับคู่เป็นตัวพิมพ์ใหญ่ ;) - person MadProgrammer; 28.10.2013
comment
เดิมทีฉันได้รวมโค้ดที่ลดค่าคงที่ด้วย แต่ใช่แล้ว ตัวพิมพ์ใหญ่ใช้งานได้น้อยกว่า - person radai; 28.10.2013
comment
วันนี้ ฉันอยากให้ Locale.ROOT ในกรณีนี้บันทึกข้อเท็จจริงที่ว่าค่าคงที่แบบฮาร์ดโค้ดเหล่านี้ไม่ใช่ปัญหาวัฒนธรรมอังกฤษจริงๆ มันถูกเพิ่มเข้ามาใน Java 6 อย่างไรก็ตาม ปัจจุบันมีสถานที่มากกว่าภาษาตุรกีซึ่งมีพฤติกรรมการจับคู่ตัวพิมพ์พิเศษ - person Holger; 28.10.2013

การใช้ String ในสวิตช์ ตัวอย่างจาก oracle docs การใช้ Strings ในคำสั่ง 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

จาก oracle docs สลับด้วยสตริง

สตริงในนิพจน์สวิตช์จะถูกเปรียบเทียบกับนิพจน์ที่เกี่ยวข้องกับแต่ละเลเบลเคสราวกับว่า String#equals

คุณสามารถใช้ได้

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

ดูสิ่งนี้ด้วย

person Aniket Kulkarni    schedule 28.10.2013