Java switch caseステートメント。デフォルトの実装はcasesensitiveです。以下の例を参照してください。
_public class SwitchCaseTest {
/**
* @param args
*/
public static void main(String[] args) {
switch ("UPPER") {
case "upper" :
System.out.println("true");
break;
default:
System.out.println("false");
break;
}
}
}
_
したがって、上記のステートメントはfalse
を出力として返します。そして、私はそれをString.equalsIgnoreCase()
がするようにcase-insensitiveマッチで動作させるようにしています。両方の文字列リテラルを小文字に変換して比較してみました。しかし、そうすることができませんでした。
それをしたい場合:入力データがすべて小文字であることを確認し、小文字を使用してください...
switch ("UPPER".toLowerCase()) {
case "upper" :
....
また、古くなったローカライゼーションの問題が再び起こり、これもまた悩まされています...たとえば、トルコ語のロケールでは、i
の大文字の対応物はI
ではなくİ
...そしてI
はi
に変換されず、「ドットなしのi」:ı
。これを過小評価しないでください、それは致命的な間違い...になる可能性があります...
あなたはすべてを大文字または小文字にしてみます
String str = "something".toUpperCase();
switch(str){
case "UPPER":
}
または
String str = "something".toLowerCase();
swtich(str){
case "lower":
}
またはさらに良い列挙型を使用してください(これはJava 7からのみ可能です)
enum YourCases {UPPER1, UPPER2} // cases.
YourCases c = YourCases.UPPER1; // you will probably get this value from somewhere
switch(c){
case YourCases.UPPER1: ....
break;
case YourCases.UPPER2: ....
}
試す
switch ("UPPER".toUpperCase()) {
case "UPPER" :
大文字と小文字の式を使用して小文字か大文字かを確認する必要がないように、以下を使用することをお勧めします。
String value = String.valueOf(userChoice).toUpperCase();
これは、スイッチケースで評価を行う前に小文字を大文字に変換するのに役立ちます。