2013-10-28 7 views
21

Java 7の新機能でPOCを実行しています。 switch文でStringを使用するコードがあり、動作します。私は大文字と小文字を区別しないで動作させたい。文字列のignoreCaseでチェックアウトする方法はありますか?Java 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()をオンにすることができます。そう:Oracleのドキュメントからavoid issues with turkish

+0

この場合、大文字で一致するので、 's.toUpperCase'を提案します;) – MadProgrammer

+0

私はもともと定数を小文字にしたコードを含んでいましたが、大文字はあまり機能しません – radai

+2

今日、私は' Localeこれらのハードコーディングされた定数は実際には英語の文化の問題ではないという事実を文書化するために.ROOT'を使用します。それはJava 6で追加されました。ところで、今日はトルコ語よりも多くのロケールが存在し、特殊な大文字と小文字の区別があります。 – Holger

2

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

と私たちは英語ロケールで、あなたのより良い大文字に物事をつべこべしている間switch with string

スイッチ式の文字列を比較し、あたかもString#equalsメソッドが使用されているかのように、各ケースラベルに関連付けられた式を使用します。

あなたは

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

参照に使用することができますまた、Oracleのドキュメントからスイッチの例で文字列を使用して

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); 
      } 
     } 
    } 
関連する問題