Check whether a string is not null and not empty
What about isEmpty() ?
if(str != null && !str.isEmpty())
Be sure to use the parts of &&
in this order, because java will not proceed to evaluate the second part if the first part of &&
fails, thus ensuring you will not get a null pointer exception from str.isEmpty()
if str
is null.
Beware, it's only available since Java SE 1.6. You have to check str.length() == 0
on previous versions.
To ignore whitespace as well:
if(str != null && !str.trim().isEmpty())
(since Java 11 str.trim().isEmpty()
can be reduced to str.isBlank()
which will also test for other Unicode white spaces)
Wrapped in a handy function:
public static boolean empty( final String s ) {
// Null-safe, short-circuit evaluation.
return s == null || s.trim().isEmpty();
}
Becomes:
if( !empty( str ) )
Use org.apache.commons.lang.StringUtils
I like to use Apache commons-lang for these kinds of things, and especially the StringUtils utility class:
import org.apache.commons.lang.StringUtils;
if (StringUtils.isNotBlank(str)) {
...
}
if (StringUtils.isBlank(str)) {
...
}
Just adding Android in here:
import android.text.TextUtils;
if (!TextUtils.isEmpty(str)) {
...
}
To add to @BJorn and @SeanPatrickFloyd The Guava way to do this is:
Strings.nullToEmpty(str).isEmpty();
// or
Strings.isNullOrEmpty(str);
Commons Lang is more readable at times but I have been slowly relying more on Guava plus sometimes Commons Lang is confusing when it comes to isBlank()
(as in what is whitespace or not).
Guava's version of Commons Lang isBlank
would be:
Strings.nullToEmpty(str).trim().isEmpty()
I will say code that doesn't allow ""
(empty) AND null
is suspicious and potentially buggy in that it probably doesn't handle all cases where is not allowing null
makes sense (although for SQL I can understand as SQL/HQL is weird about ''
).