Ответ 1
нет, но вы можете включить s.toUpperCase()
. так:
switch (s.toUpperCase()) {
//same as before
}
и пока мы nitpicking, вы лучше дела в верхнем регистре в английской локали, чтобы избегать проблем с турками
Я делаю POC для Java 7 новых функций. У меня есть код для использования String в инструкции switch, и он работает. Я хочу заставить его работать и в случае нечувствительности. Есть ли способ проверить с помощью ignoreCase на 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;
}
}
}
нет, но вы можете включить s.toUpperCase()
. так:
switch (s.toUpperCase()) {
//same as before
}
и пока мы nitpicking, вы лучше дела в верхнем регистре в английской локали, чтобы избегать проблем с турками
с использованием String в switch Пример из oracle docs Использование строк в операторах 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);
}
}
}
От oracle docs переключатель со строкой
Строка в выражении switch сравнивается с выражениями, связанными с каждым ярлыком case, как если бы использовался метод String # equals.
Вы можете использовать
switch(s.toUpperCase()){
...
.....
}
См. также