Je me demandais s'il existe un moyen d'effectuer une correspondance insensible à la casse dans Java instruction switch case. L'implémentation par défaut est sensible à la casse. Veuillez consulter l'exemple ci-dessous.
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;
}
}
}
L'instruction ci-dessus renvoie donc false
en sortie. Et j'essaye de le faire fonctionner pour insensible à la casse correspondre comme le ferait String.equalsIgnoreCase()
. J'ai essayé de convertir la chaîne littérale en minuscules, puis de comparer. mais n'a pas pu le faire.
Si vous voulez le faire: assurez-vous simplement que les données d'entrée sont en minuscules et utilisez des minuscules ...
switch ("UPPER".toLowerCase()) {
case "upper" :
....
En outre, le problème séculaire de la localisation frappe à nouveau, et afflige cette chose aussi ... Par exemple, dans les paramètres régionaux turcs, l'homologue majuscule de i
n'est pas I
, mais İ
... Et en retour, le I
n'est pas transformé en i
, mais un "i sans point": ı
. Ne sous-estimez pas cela, cela peut être ne erreur mortelle ...
Vous essayez de tout mettre en majuscules ou en minuscules
String str = "something".toUpperCase();
switch(str){
case "UPPER":
}
ou
String str = "something".toLowerCase();
swtich(str){
case "lower":
}
ou encore mieux utiliser enum (notez que cela n'est possible qu'à partir de 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: ....
}
essayer
switch ("UPPER".toUpperCase()) {
case "UPPER" :
Pour éviter d'avoir à utiliser l'expression case pour vérifier si elle est en minuscule ou en majuscule, je vous recommande d'utiliser ce qui suit:
String value = String.valueOf(userChoice).toUpperCase();
Cela permet de convertir les minuscules en majuscules avant d'effectuer l'évaluation dans le cas du commutateur.