Android检查Android中的null或空字符串
Posted
技术标签:
【中文标题】Android检查Android中的null或空字符串【英文标题】:Android check null or empty string in Android 【发布时间】: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);
如何检查null
和empty
字符串?
【问题讨论】:
【参考方案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 && (!TextUtils.equals(userEmail ,"null")) && (!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
【讨论】:
以上是关于Android检查Android中的null或空字符串的主要内容,如果未能解决你的问题,请参考以下文章