通过字符串<在java中切换大小写1.7

时间:2013-04-23 11:25:22

标签: java javascript switch-statement

function checkValue(value) {
    if (value === null || value === undefined || value === '') {
        return '-';
    } else {
        switch (value) {
        case true:
            return 'Yes';
            break;
        case false:
            return 'No';
            break;
        default:
            return value;
            break;
        }
    }
}

我知道按字符串开关的情况只有> 1.7。无论如何,我可以在不使用传统if/else的情况下在java中转换这段代码。这段代码用JavaScript编写。

2 个答案:

答案 0 :(得分:6)

使用enum代替< 1.7切换字符串不支持

    private enum MyEnum {
        a, b, c, d;
    }

    String val; // input
    MyEnum mye = MyEnum.valueOf(val);

    switch (mye) {
        case a:
            return something;
        case carrot:
            return something;
        ..
    }

P.S:伪代码。 IDE不在手.Sorry。

答案 1 :(得分:1)

您可以像这样使用Enum:

enum MyEnum {

    A1, A2, A3;

}

String val = "myVal"; // your input

MyEnum enumVal;
try {
    enumVal = MyEnum(val);
} catch (IllegalArgumentException iae) {
    enumVal = null;
}

switch (enumVal) {

    case A1: 
        doSomething();
        break;

    case A2: 
        doOtherStuff();
        break;

    default: 
        doDefault();
        break;

}

如果您认为try块过于丑陋,可以使用EnumUtils中的apache commons lang,那将为您完成这些操作,您只需要更改:

MyEnum enumVal;
try {
    enumVal = MyEnum(val);
} catch (IllegalArgumentException iae) {
    enumVal = null;
}

用这个:

MyEnum enumVal = EnumUtils.getEnum(MyEnum.class, val);

修改

对于您想要过滤非字符串的布尔值的情况,您可以执行以下操作:

Object input = "MyString";

if (input == Boolean.TRUE) {
    return "Yes";
} else if (input == Boolean.FALSE) {
    return "No";
} else {
    return input;
}

如果它们是字符串,则需要比较字符串本身,如:

if ("true".equals(input)) {
    return "Yes";
} else if ("false".equals(input)) {
    return "No";
} else {
    return input;
}