【问题标题】:Android check null or empty string in AndroidAndroid检查Android中的null或空字符串
【发布时间】:2015-01-21 02:25:29
【问题描述】:

在我尝试AsyncTask 时,我从我的服务器获取电子邮件地址。在onPostExecute() 中,我必须检查电子邮件地址是empty 还是null。我使用以下代码进行检查:

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

但是在我的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);
        }
    }

如何检查nullempty 字符串?

【问题讨论】:

    标签: android android-asynctask android-fragmentactivity


    【解决方案1】:

    使用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);
    

    备注

    • documentation 声明会检查空长度和零长度。无需在这里重新发明轮子。
    • early return 是一个值得遵循的好习惯。

    【讨论】:

      【解决方案2】:

      来自@Jon Skeet 的评论,String 的值实际上是"null"。以下代码解决了它

      if (userEmail != null && !userEmail.isEmpty() && !userEmail.equals("null")) 
      

      【讨论】:

      • if (userEmail != null &amp;&amp; (!TextUtils.equals(userEmail ,"null")) &amp;&amp; (!TextUtils.isEmpty(userEmail))){ 也有效
      • 这可能适用于电子邮件,但不要使用equals("null") 来检查空用户名。 bbc.com/future/story/…
      • 在大写空值的情况下使用userEmail.equalsIgnoreCase("null") 可能会更好。
      【解决方案3】:

      你可以用这个检查它:

      if(userEmail != null && !userEmail .isEmpty())
      

      请记住,您必须使用上述代码中的确切顺序。因为如果userEmail 为空,确保您不会从userEmail.isEmpty() 获得空指针异常。

      上面的描述,它只在 Java SE 1.6 之后可用。在以前的版本中查看 userEmail.length() == 0


      更新:

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

      if (TextUtils.isEmpty(userEmail))
      

      科特林:

      使用 from isNullOrEmpty 表示 null 或空值或 isNullOrBlank 表示 null 或空或仅包含空白字符。

      if (userEmail.isNullOrEmpty())
      ...
      if (userEmail.isNullOrBlank())
      

      【讨论】:

        【解决方案4】:

        检查空字符串是否等于null、长度为零或包含“null”字符串

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

        【讨论】:

          【解决方案5】:

          您可以使用 TextUtils 中的实用方法“isEmpty”进行检查,

          isEmpty(CharSequence str) 方法检查 null 和长度的条件。

          public static boolean isEmpty(CharSequence str) {
               if (str == null || str.length() == 0)
                  return true;
               else
                  return false;
          }
          

          【讨论】:

            【解决方案6】:

            如果使用 Kotlin:-

             if (TextUtils.isEmpty(userEmail).not()) {
                    // do your work
                } else {
                    // can show error message userEmail is empty
                }
            

            如果使用 Java:-

              if (!TextUtils.isEmpty(userEmail)) {
                    // do your work
                } else {
                    // can show error message userEmail is empty
                }
            

            【讨论】:

              【解决方案7】:

              如果你检查 null 或空字符串,那么你可以试试这个

              if (createReminderRequest.getDate() == null && createReminderRequest.getDate().trim().equals("")){
                  DialogUtility.showToast(this, ProjectUtils.getString(R.string.please_select_date_n_time));
              }
              

              【讨论】:

                【解决方案8】:

                我测试字符串是否为空的简单解决方案:

                if (s.equals("null")){ ...... }

                有两种情况。

                变量(字符串类型)为空(不存在): == 有效。

                变量有一个空值, *.equals("null") 给出正确的布尔值。

                看图。

                【讨论】:

                • 你是指n-u-l-l这个词还是一个值为null的变量?
                • 我猜是空值的变量。
                【解决方案9】:

                检查空字符串的正确方法。

                1.速度更快但不安全,如果字符串为null,它会抛出NullPointErexception

                if str.isEmpty() then
                

                2.它也更快,但不安全。

                if String.length() = 0 then
                

                3.它没有前两个更快,但它是空安全的。

                if "".equals(str) then
                

                4.第四条路

                TextUtils.isEmpty(myString)
                

                5.如果要检查空字符串。

                StringUtils.isEmpty(nullString)
                

                6.如果你想同时检查null和空字符串

                if (str == null || str.length() == 0)
                

                【讨论】:

                  【解决方案10】:

                  这对我有用

                  EditText   etname = (EditText) findViewById(R.id.etname);
                   if(etname.length() == 0){
                                      etname.setError("Required field");
                                  }else{
                                      Toast.makeText(getApplicationContext(),"Saved",Toast.LENGTH_LONG).show();
                                  }
                  

                  或将其用于字符串

                  String DEP_DATE;
                  if (DEP_DATE.equals("") || DEP_DATE.length() == 0 || DEP_DATE.isEmpty() || DEP_DATE == null){
                  }
                  

                  【讨论】:

                  • 请考虑先添加一个空检查。
                  【解决方案11】:

                  如果给出的所有答案都不起作用,请尝试

                  String myString = null;
                  
                  if(myString.trim().equalsIgnoreCase("null")){
                      //do something
                  }
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2021-11-30
                    • 1970-01-01
                    • 2016-09-13
                    • 1970-01-01
                    • 2013-01-29
                    • 2011-03-27
                    • 2016-02-19
                    • 2013-03-14
                    相关资源
                    最近更新 更多