Android在Android中检查null或空字符串

use*_*985 64 android android-asynctask android-fragmentactivity

在我尝试时,AsyncTask我从我的服务器获取电子邮件地址.在onPostExecute()我必须检查是电子邮件地址emptynull.我使用以下代码来检查它:

if (userEmail != null && !userEmail.isEmpty()) {
    Toast.makeText(getActivity(), userEmail, Toast.LENGTH_LONG).show();
    UserEmailLabel.setText(userEmail);
}
Run Code Online (Sandbox Code Playgroud)

但在我Toast看来null是印刷的.我的完整代码:

private class LoadPersonalData extends AsyncTask<String, Void, Void> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    protected Void doInBackground(String... res) {
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("user_id", PrefUserName));
        params.add(new BasicNameValuePair("type", type_data));
        JSONObject json = jsonParser.makeHttpRequest(Url, "POST", params);
        String result = "";
        try {
            result = json.getString("message");
        } catch (JSONException e) {
            e.printStackTrace();
        }
        if (result.equals("success")) {
            try {
                userEmail = json.getString("email");
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);            
        if (userEmail != null && !userEmail.isEmpty()) {
            Toast.makeText(getActivity(), userEmail, Toast.LENGTH_LONG).show();
            UserEmailLabel.setText(userEmail);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我如何检查nullempty字符串?提前致谢.

Sur*_*gch 130

使用 TextUtils.isEmpty( someString )

String myString = null;

if (TextUtils.isEmpty(myString)) {
    return; // or break, continue, throw
}

// myString is neither null nor empty if this point is reached
Log.i("TAG", myString);
Run Code Online (Sandbox Code Playgroud)

笔记

  • 文件规定,null和零长度的检查.无需在这里重新发明轮子.
  • 一个好的做法是早日回归.


use*_*985 56

来自@Jon Skeet评论,真正的String价值在于"null".以下代码解决了它

if (userEmail != null && !userEmail.isEmpty() && !userEmail.equals("null")) 
Run Code Online (Sandbox Code Playgroud)

  • 这可能适用于电子邮件,但不要使用`equals("null")`来检查空用户名.http://www.bbc.com/future/story/20160325-the-names-that-break-computer-systems (5认同)

Nar*_*aki 16

你可以用这个检查一下:

if(userEmail != null && !userEmail .isEmpty())
Run Code Online (Sandbox Code Playgroud)

请记住,您必须使用上述完全相同的代码.因为这确保您不会从userEmail.isEmpty()if 获得空指针异常userEmail为null.

以上描述,它仅在Java SE 1.6之后可用.检查userEmail.length() == 0以前的版本.


更新:

使用isEmpty(stringVal)来自TextUtils类的方法:

if (TextUtils.isEmpty(userEmail))
Run Code Online (Sandbox Code Playgroud)


hit*_*141 14

如果空字符串等于null,则检查空字符串,长度为零或包含"null"字符串

public static boolean isEmptyString(String text) {
        return (text == null || text.trim().equals("null") || text.trim()
                .length() <= 0);
    }
Run Code Online (Sandbox Code Playgroud)