1

我有一个从数据库返回的字符串,它的长度总是等于一。

此字符串可能等于“0”、“1”、“Y”、“N”或 null,这实际上是数据库中的一个约束,由于日志目的,我不允许替换它。

考虑到值“Y”或“N”是不区分大小写的,有什么更好的表现?

public boolean isTrue {
    return this.str != null && (this.str.equals("1") || this.str.equalsIgnoreCase("S"));
}

或者

public boolean isTrue {
    if (this.str != null) {
        final char character = this.str.charAt(0);
        return character == '1' || character == 'S' || character == 's';
    }
    return false;
}

PS:请不要考虑方法、字段和变量的名称。

4

2 回答 2

5

要检查我的信在里面"01YN",我会做

public boolean isTrue {
    return this.str != null && ("01YN".indexOf(this.str)>=0);
}

我认为这是一种干净易读的方式。此外,您可以声明一个Constant for"01YN"和 do,而不是在这里进行硬编码。

于 2013-10-23T14:48:22.613 回答
2

这可能值得一试:

switch(str == null ? 'x' : str.charAt(0)) {
    case '1', 'y', 'Y':
        return true;
}
return false;
于 2013-10-23T14:51:30.890 回答