我想知道如何更有效和更有效地实现以下内容:检查是否在字段中输入了文本
if(text1.equals("") || text2.equals("") || text3.equals("") || text4.equals("")) {
//Do Stuff
}
我可以看到超过2个字段如何快速混乱,并想知道这是否是一种正确的方法,或者是否存在替代方案?
答案 0 :(得分:7)
您可以这样做:
if (Arrays.asList(text1, text2, etc).contains(""))
但更好的解决方案取决于具体情况。
但请注意,这比您当前的代码慢一点。但是,如果你不是每秒执行那么多次测试,那应该没关系。
编辑,因为在评论中已经了解到只有空格的字符串也应满足条件......这里有:
private static final Pattern PATTERN = Pattern.compile("\\s*");
private static boolean emptyOrSpacesOnly(final String... strings)
{
for (final String s: strings)
if (PATTERN.matcher(s).matches())
return true;
return false;
}
然后,在代码中:
if (emptyOrSpacesOnly(text1, text2, etc))
答案 1 :(得分:2)
fge's solution当然很聪明,减少了代码行。但是,当我看到那段代码时,我觉得有些意思会丢失。
我鼓励你接受可读代码,即使它稍微冗长一点。我的解决方案是在开始一个方法之前测试这些前提条件。如果前置条件失败,则抛出异常。
编写自己的验证方法或使用Apache Commons Lang Validate
类。然后你的代码看起来像:
Validate.notEmpty(text1, "error message");
Validate.notEmpty(text2, "error message");
Validate.notEmpty(text3, "error message");
Validate.notEmpty(text4, "error message");
// This line is only reached if all fields are non-empty
我认为这很容易阅读,这是赢得胜利的一半。