Android开发中,使用TextUtils.isEmpty()来判断字符串是否为null或者空字符串"".但判断不了为"null"串(null+“”)的情况。
TextUtils.isEmpty()函数定义:
public static boolean isEmpty(@Nullable CharSequence str) {
return str == null || str.length() == 0;
}
String str1 = null;
//null串
String str2 = str1+"";
//字符串“null”
String str3 = "";
//长度为0的串
Log.i("Result",str2);
//结果为:“null”。这样我们再使用TextUtils.isEmpty()进行非空判断的时候,就会出错
Log.i("Result", str3);
//结果为:“”
if(TextUtils.isEmpty(str1))
{
Log.i("Result","null串通过");
//这个
}else {
Log.i("Result","null串不通过");
}
if(TextUtils.isEmpty(str2))
{
Log.i("Result","null串+\"\"通过");
}else {
Log.i("Result","null串+\"\"不通过");
//这个
}
if(TextUtils.isEmpty(str3))
{
Log.i("Result","\"\"串通过");
//这个
}else {
Log.i("Result","\"\"串不通过");
}
better的判断方法应该是:
//如果str是null、“null”、长度为0的串三者之一
if((TextUtils.isEmpty(str)) ||("null".equalsIgnoreCase(str)))
//如果str不是null、“null”、长度为0的串三者之一
if(!(TextUtils.isEmpty(str)) &&!("null".equalsIgnoreCase(str)))