[英]Java: get string value regardless of case sensitivity in switch-case
我有一些字符串(字符串结果),用户在应用程序中插入它没有任何区分大小写的策略,用户可以插入,例如:“失败”或“失败”或“失败”和“成功”或“成功”等我也只有一种方法,例如:fail()、success() 并且必须调用相关方法
现在我想通过使用下面的常量(成功,失败,...)在 switch-case 语句中使用一个字符串:
public final class ActionResultStatus
{
public static final String SUCCESS = "Success";
public static final String FAIL = "Fail";
public static final String REJECTED = "Rejected";
public static final String IN_PROGRESS = "InProgress";
}
String result = userClass.getResult(); //UserClass is a container class for user inputted data
switch(result)
{
case ActionResultStatus.FAIL:
fail();
case ActionResultStatus.SUCCESS :
success();
}
请注意:
1-我不想使用toUpperCase()
或toLowerCase()
作为结果,因为我必须添加更多 case 语句。
2-我无法将我的 Constatn class 字段值更改为小写,它们必须是帕斯卡大小写,例如:“成功”,因为它们必须在帕斯卡大小写模式下准确地保留在 DB 上
3-我认为我不能在这种情况下使用equalIgnoreCase()
方法,因为这不是 if 语句。
谢谢你。
把逻辑分开一点。 首先将您的状态转换为具有查找 function 的 Enum 以找到枚举:
public enum ActionResultStatus {
SUCCESS("Success"),
FAIL("Fail"),
REJECTED("Rejected"),
IN_PROGESS("InProgress"),
UNKNOWN("Unknown");
private String outputStr;
private ActionResultStatus(String output) {
outputStr = output;
}
public static ActionResultStatus findStatus(String input) {
for (ActionResultStatus status : values()) {
if (input.equalsIgnoreCase(status.outputStr)) {
return status;
}
}
return UNKNOWN;
}
public String toString() {
return outputStr;
}
}
然后你的处理逻辑变成这样:
ActionResultStatus status = ActionResultStatus.findStatus(userClass.getResult());
switch (status) {
case FAIL: fail(); break;
case SUCCESS: success(); break;
default: break;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.