2013-10-28 13 views
21

में अनदेखा केस स्विच करें मैं जावा 7 नई सुविधाओं पर एक पीओसी कर रहा हूं। मेरे पास स्विच स्टेटमेंट में स्ट्रिंग का उपयोग करने के लिए कोड है और यह काम करता है। मैं इसे असंवेदनशील मामले में भी काम करना चाहता हूं। स्ट्रिंग पर अनदेखा के साथ जांचने का कोई तरीका है?जावा 7

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

} 
} 

उत्तर

53

नहीं, लेकिन आप s.toUpperCase() पर स्विच कर सकते हैं। इसलिए:

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

और हम अंग्रेज़ी स्थान में, आप nitpicking रहे हैं avoid issues with turkish

+0

इस मामले में मैं 's.toUpperCase' का सुझाव दूंगा क्योंकि मैचों के ऊपरी मामले में हैं;) – MadProgrammer

+0

मैं मूल रूप से कोड शामिल करता हूं जो स्थिरांक को भी कम करता है, लेकिन हाँ, अपरकेस कम काम – radai

+2

आज है, मैं' लोकेल ' इन मुद्दों में .ROOT' इस तथ्य को दस्तावेज करने के लिए कि इन हार्ड-कोडित स्थिरांक वास्तव में अंग्रेजी संस्कृति के मुद्दे नहीं हैं। इसे जावा 6 में जोड़ा गया था। वैसे, आज विशेष मामले मिलान व्यवहार के साथ तुर्की की तुलना में अधिक स्थानीय हैं। – Holger

2

करने के लिए बेहतर अपर-केस बातें ओरेकल डॉक्स switch with string

से स्विच अभिव्यक्ति में स्ट्रिंग तुलना की जाती है प्रत्येक केस लेबल से जुड़े अभिव्यक्तियों के साथ जैसे String#equals विधि का उपयोग किया जा रहा था।

आप उपयोग कर सकते हैं

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

भी देखें

6

ओरेकल डॉक्स से स्विच उदाहरण में स्ट्रिंग का उपयोग कर Using Strings in switch Statements

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