Understanding Apache Commons StringUtils: isEmpty, isBlank, and Related Methods
This article introduces Apache Commons Lang's StringUtils utility methods, explaining the behavior and differences of isEmpty, isNotEmpty, isAnyEmpty, isNoneEmpty, as well as isBlank, isNotBlank, isAnyBlank, and isNoneBlank, with code examples and usage guidelines for Java developers.
Hello everyone, I am Peng Lei.
New colleagues who have been working with Java for three years may not know the difference between isEmpty and isBlank, or even the existence of methods such as isAnyEmpty, isNoneEmpty, isAnyBlank, and isNoneBlank. Let's explore the org.apache.commons.lang3.StringUtils utility class.
isEmpty Series
StringUtils.isEmpty()
Checks whether a CharSequence is null or has a length of zero. A string containing only a space character is not considered empty.
StringUtils.isEmpty(null) = true<br/>StringUtils.isEmpty("") = true<br/>StringUtils.isEmpty(" ") = false<br/>StringUtils.isEmpty("bob") = false<br/>StringUtils.isEmpty(" bob ") = false /**
* NOTE: This method changed in Lang version 2.0.
* It no longer trims the CharSequence.
* That functionality is available in isBlank().
*
* @param cs the CharSequence to check, may be null
* @return {@code true} if the CharSequence is empty or null
* @since 3.0 Changed signature from isEmpty(String) to isEmpty(CharSequence)
*/
public static boolean isEmpty(final CharSequence cs) {
return cs == null || cs.length() == 0;
}StringUtils.isNotEmpty()
Returns the opposite of isEmpty(), i.e., !isEmpty(cs).
public static boolean isNotEmpty(final CharSequence cs) {
return !isEmpty(cs);
}StringUtils.isAnyEmpty()
Returns true if any of the supplied CharSequence arguments is null or empty.
StringUtils.isAnyEmpty(null) = true<br/>StringUtils.isAnyEmpty(null, "foo") = true<br/>StringUtils.isAnyEmpty("", "bar") = true<br/>StringUtils.isAnyEmpty("bob", "") = true<br/>StringUtils.isAnyEmpty(" bob ", null) = true<br/>StringUtils.isAnyEmpty(" ", "bar") = false<br/>StringUtils.isAnyEmpty("foo", "bar") = false /**
* @param css the CharSequences to check, may be null or empty
* @return {@code true} if any of the CharSequences are empty or null
* @since 3.2
*/
public static boolean isAnyEmpty(final CharSequence... css) {
if (ArrayUtils.isEmpty(css)) {
return true;
}
for (final CharSequence cs : css) {
if (isEmpty(cs)) {
return true;
}
}
return false;
}StringUtils.isNoneEmpty()
Equivalent to !isAnyEmpty(css); returns true only when **all** supplied CharSequences are non‑null and non‑empty.
StringUtils.isNoneEmpty(null) = false<br/>StringUtils.isNoneEmpty(null, "foo") = false<br/>StringUtils.isNoneEmpty("", "bar") = false<br/>StringUtils.isNoneEmpty("bob", "") = false<br/>StringUtils.isNoneEmpty(" bob ", null) = false<br/>StringUtils.isNoneEmpty(" ", "bar") = true<br/>StringUtils.isNoneEmpty("foo", "bar") = true /**
* @param css the CharSequences to check, may be null or empty
* @return {@code true} if none of the CharSequences are empty or null
* @since 3.2
*/
public static boolean isNoneEmpty(final CharSequence... css) {
return !isAnyEmpty(css);
}isBlank Series
StringUtils.isBlank()
Checks whether a CharSequence is null , empty ( "") or contains only whitespace characters.
StringUtils.isBlank(null) = true<br/>StringUtils.isBlank("") = true<br/>StringUtils.isBlank(" ") = true<br/>StringUtils.isBlank("bob") = false<br/>StringUtils.isBlank(" bob ") = false /**
* @param cs the CharSequence to check, may be null
* @return {@code true} if the CharSequence is null, empty or whitespace only
* @since 2.0
* @since 3.0 Changed signature from isBlank(String) to isBlank(CharSequence)
*/
public static boolean isBlank(final CharSequence cs) {
int strLen;
if (cs == null || (strLen = cs.length()) == 0) {
return true;
}
for (int i = 0; i < strLen; i++) {
if (!Character.isWhitespace(cs.charAt(i))) {
return false;
}
}
return true;
}StringUtils.isNotBlank()
Returns the opposite of isBlank(), i.e., !isBlank(cs).
public static boolean isNotBlank(final CharSequence cs) {
return !isBlank(cs);
}StringUtils.isAnyBlank()
Returns true if any of the supplied CharSequences is null, empty, or consists solely of whitespace.
StringUtils.isAnyBlank(null) = true<br/>StringUtils.isAnyBlank(null, "foo") = true<br/>StringUtils.isAnyBlank(null, null) = true<br/>StringUtils.isAnyBlank("", "bar") = true<br/>StringUtils.isAnyBlank("bob", "") = true<br/>StringUtils.isAnyBlank(" bob ", null) = true<br/>StringUtils.isAnyBlank(" ", "bar") = true<br/>StringUtils.isAnyBlank("foo", "bar") = false /**
* @param css the CharSequences to check, may be null or empty
* @return {@code true} if any of the CharSequences are blank, null or whitespace only
* @since 3.2
*/
public static boolean isAnyBlank(final CharSequence... css) {
if (ArrayUtils.isEmpty(css)) {
return true;
}
for (final CharSequence cs : css) {
if (isBlank(cs)) {
return true;
}
}
return false;
}StringUtils.isNoneBlank()
Returns true only when **all** supplied CharSequences are non‑null, non‑empty and contain at least one non‑whitespace character.
StringUtils.isNoneBlank(null) = false<br/>StringUtils.isNoneBlank(null, "foo") = false<br/>StringUtils.isNoneBlank(null, null) = false<br/>StringUtils.isNoneBlank("", "bar") = false<br/>StringUtils.isNoneBlank("bob", "") = false<br/>StringUtils.isNoneBlank(" bob ", null) = false<br/>StringUtils.isNoneBlank(" ", "bar") = false<br/>StringUtils.isNoneBlank("foo", "bar") = true /**
* @param css the CharSequences to check, may be null or empty
* @return {@code true} if none of the CharSequences are blank, null or whitespace only
* @since 3.2
*/
public static boolean isNoneBlank(final CharSequence... css) {
return !isAnyBlank(css);
}Other StringUtils Methods
For a complete list of methods and detailed documentation, refer to the official Apache Commons Lang API:
https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html
Additional illustrative images are included in the original article.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Architect's Tech Stack
Java backend, microservices, distributed systems, containerized programming, and more.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
