Android如何检查多个字符串是否为空

3
我有一个表单,我将表单数据放入意图中,然后启动新活动并使用意图发送数据,但是如果字符串为空,我想要进行检查并显示错误消息。如果字符串不为空,则可以启动活动。
我尝试了以下代码,但似乎不起作用。如果字段为空,它只会启动另一个活动(现在我只尝试了一个字段,因为我不知道如何处理多个字段)。
    //getting the field values
    String firstname = editTextFirstname.getText().toString();
    String lastname = editTextLastname.getText().toString();
    String amount = editTextBedrag.getText().toString();
    String timespan = spinnerPeriode.getSelectedItem().toString();
    String iban = editTextIBAN.getText().toString();

    if(firstname != null) {
        //putting data in the intent
        intent.putExtra(FIRSTNAME, firstname);
        intent.putExtra(LASTNAME, lastname);
        intent.putExtra(AMOUNT, amount);
        intent.putExtra(TIMESPAN, timespan);
        intent.putExtra(IBAN, iban);

        startActivity(intent);
    }else{
        Toast.makeText(MainActivity.this, "Oops, you forgot to fill in some fields!", Toast.LENGTH_SHORT).show();
    }
6个回答

7
更简洁的方法是:
public static boolean isAnyStringNullOrEmpty(String... strings) {
    for (String s : strings)
        if (s == null || s.isEmpty())
            return true;
    return false;
}

然后你可以这样调用它。
if (isAnyStringNullOrEmpty(firstname, lastname, amount, timespan, iban)) {
    Toast.makeText(MainActivity.this, "Oops, you forgot to fill in some fields!", Toast.LENGTH_SHORT).show();
} else {

}

5
使用Apache Commons,我们可以这样做:
boolean valid = StringUtils.isNoneEmpty(firstname, lastname, amount, timespan, iban)

我会说 StringUtils#isNoneBlank。isNoneEmpty() 将空格视为非空值,而 isNoneBlank() 则认为空。 - lorraine batol
感谢你在评论中指出这一点- 不过,问题明确要求为空。还是谢谢你的建议。 - Anant Simran Singh

2

更改

if(firstname != null)

为了

if(!TextUtils.isEmpty(firstname) && !TextUtils.isEmpty(lastname) &&
     !TextUtils.isEmpty(amount) &&!TextUtils.isEmpty(timespan) &&
     !TextUtils.isEmpty(iban))

这个答案是不正确的,如果你将一个字段留空并运行这段代码,结果就会不正确。 - Phd. Burak Öztürk

1

仅限Java 8 + Apache Commons Lang:

String firstname = editTextFirstname.getText().toString();
String lastname = editTextLastname.getText().toString();
String amount = editTextBedrag.getText().toString();
String timespan = spinnerPeriode.getSelectedItem().toString();
String iban = editTextIBAN.getText().toString();


boolean valid =  Stream.of(firstname, lastname, amount, timespan, iban)
                       .allMatch(StringUtils::isNotBlank);

如果我从服务器获取多个字符串并将其保存到字符串中,现在有些字符串有值,但有些字符串为空,如何检查哪些是空的,哪些有值?另外,如何将非空的值设置到特定字段中? - Sunny

0
if(firstname != null && lastname != null && amount != null && timespan != null
 && iban != null & firstname.trim().isEmpty() && !lastname.trim().isEmpty() &&
 !amount .trim().isEmpty() && !timespan.trim().isEmpty() && !iban.trim().isEmpty())

如果它获取到的字符串不等于null,那么如何获取其值? - Sunny

0

使用Java Stream API:

private boolean anyBlank(String...strings) {
   return Stream.of(strings).anyMatch(string -> isBlank(string));
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接