也许你两个都不知道,也许你除了isEmpty/isNotEmpty/isNotBlank/isBlank外,并不知道还有isAnyEmpty/isNoneEmpty/isAnyBlank/isNoneBlank的存在, come on ,让我们一起来探索org.apache.commons.lang3.StringUtils;这个工具类.

#isEmpty系列

StringUtils.isEmpty()

>>>是否为空. 可以看到 " " 空格是会绕过这种空判断,因为是一个空格,并不是严格的空值,会导致 isEmpty(" ")=false

  • StringUtils.isEmpty(null) = true
  • StringUtils.isEmpty("") = true
  • StringUtils.isEmpty(" ") = false
  • StringUtils.isEmpty(“bob”) = false
  • StringUtils.isEmpty(" bob ") = false
/**
  *
  * <p>NOTE: This method changed in Lang version 2.0.
  * It no longer trims the CharSequence.
  * That functionality is available in isBlank().</p>
  *
  * @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;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

StringUtils.isNotEmpty()

>>>相当于不为空 , = !isEmpty()

public static boolean isNotEmpty(final CharSequence cs) {
    return !isEmpty(cs);
}
  • 1.
  • 2.
  • 3.

StringUtils.isAnyEmpty()

>>>是否有一个为空,只有一个为空,就为true.

  • StringUtils.isAnyEmpty(null) = true
  • StringUtils.isAnyEmpty(null, “foo”) = true
  • StringUtils.isAnyEmpty("", “bar”) = true
  • StringUtils.isAnyEmpty(“bob”, “”) = true
  • StringUtils.isAnyEmpty(" bob ", null) = true
  • StringUtils.isAnyEmpty(" ", “bar”) = false
  • StringUtils.isAnyEmpty(“foo”, “bar”) = false

isEmpty 和 isBlank 的用法区别,超详细总结_AIGC

StringUtils.isNoneEmpty()

>>>相当于!isAnyEmpty(css) , 必须所有的值都不为空才返回true

如果你近期准备面试跳槽,建议在ddkk.com在线刷题,涵盖 一万+ 道 Java 面试题,几乎覆盖了所有主流技术面试题,还有市面上最全的技术五百套,精品系列教程,免费提供。

/**
 * <p>Checks if none of the CharSequences are empty ("") or null.</p>
 *
 * <pre>
 * StringUtils.isNoneEmpty(null)             = false
 * StringUtils.isNoneEmpty(null, "foo")      = false
 * StringUtils.isNoneEmpty("", "bar")        = false
 * StringUtils.isNoneEmpty("bob", "")        = false
 * StringUtils.isNoneEmpty("  bob  ", null)  = false
 * StringUtils.isNoneEmpty(" ", "bar")       = true
 * StringUtils.isNoneEmpty("foo", "bar")     = true
 * </pre>
 *
 * @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);
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

#isBank系列

StringUtils.isBlank()

>>> 是否为真空值(空格或者空值)

  • StringUtils.isBlank(null) = true
  • StringUtils.isBlank("") = true
  • StringUtils.isBlank(" ") = true
  • StringUtils.isBlank(“bob”) = false
  • StringUtils.isBlank(" bob ") = false

isEmpty 和 isBlank 的用法区别,超详细总结_字符串_02

StringUtils.isNotBlank()

>>> 是否真的不为空,不是空格或者空值 ,相当于!isBlank();

isEmpty 和 isBlank 的用法区别,超详细总结_css_03

StringUtils.isAnyBlank()

>>>是否包含任何真空值(包含空格或空值)

  • StringUtils.isAnyBlank(null) = true
  • StringUtils.isAnyBlank(null, “foo”) = true
  • StringUtils.isAnyBlank(null, null) = true
  • StringUtils.isAnyBlank("", “bar”) = true
  • StringUtils.isAnyBlank(“bob”, “”) = true
  • StringUtils.isAnyBlank(" bob ", null) = true
  • StringUtils.isAnyBlank(" ", “bar”) = true
  • StringUtils.isAnyBlank(“foo”, “bar”) = false
/**
 * <p>Checks if any one of the CharSequences are blank ("") or null and not whitespace only..</p>
 * @param css  the CharSequences to check, may be null or empty
 * @return {@code true} if any of the CharSequences are blank or 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;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.

StringUtils.isNoneBlank()

>>>是否全部都不包含空值或空格

  • StringUtils.isNoneBlank(null) = false
  • StringUtils.isNoneBlank(null, “foo”) = false
  • StringUtils.isNoneBlank(null, null) = false
  • StringUtils.isNoneBlank("", “bar”) = false
  • StringUtils.isNoneBlank(“bob”, “”) = false
  • StringUtils.isNoneBlank(" bob ", null) = false
  • StringUtils.isNoneBlank(" ", “bar”) = false
  • StringUtils.isNoneBlank(“foo”, “bar”) = true
/**
 * <p>Checks if none of the CharSequences are blank ("") or null and whitespace only..</p>
 * @param css  the CharSequences to check, may be null or empty
 * @return {@code true} if none of the CharSequences are blank or null or whitespace only
 * @since 3.2
 */
public static boolean isNoneBlank(final CharSequence... css) {


  return !isAnyBlank(css);
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

StringUtils的其他方法

可以参考官方的文档,里面有详细的描述,有些方法还是很好用的.
 https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html

方法名

英文解释

中文解释

IsEmpty/IsBlank

checks if a String contains text

检查字符串是否包含文本

Trim/Strip

removes leading and trailing whitespace

删除前导和尾随空格

Equals/Compare

compares two strings null-safe

比较两个字符串是否为null安全的

startsWith

check if a String starts with a prefix null-safe

检查字符串是否以前缀null安全开头

endsWith

check if a String ends with a suffix null-safe

检查字符串是否以后缀null安全结尾

IndexOf/LastIndexOf/Contains

null-safe index-of checks

包含空安全索引检查

IndexOfAny/LastIndexOfAny/IndexOfAnyBut/LastIndexOfAnyBut

index-of any of a set of Strings

任意一组字符串的索引

ContainsOnly/ContainsNone/ContainsAny

does String contains only/none/any of these characters

字符串是否仅包含/无/这些字符中的任何一个

Substring/Left/Right/Mid

null-safe substring extractions

字符串安全提取

SubstringBefore/SubstringAfter/SubstringBetween

substring extraction relative to other strings -相对其他字符串的字符串提取


Split/Join

splits a String into an array of substrings and vice versa

将字符串拆分为子字符串数组,反之亦然

Remove/Delete

removes part of a String -删除字符串的一部分


Replace/Overlay

Searches a String and replaces one String with another

搜索字符串,然后用另一个字符串替换

Chomp/Chop

removes the last part of a String

删除字符串的最后一部分

AppendIfMissing

appends a suffix to the end of the String if not present

如果不存在后缀,则在字符串的末尾附加一个后缀

PrependIfMissing

prepends a prefix to the start of the String if not present

如果不存在前缀,则在字符串的开头添加前缀

LeftPad/RightPad/Center/Repeat

pads a String

填充字符串

UpperCase/LowerCase/SwapCase/Capitalize/Uncapitalize

changes the case of a String

更改字符串的大小写

CountMatches

counts the number of occurrences of one String in another

计算一个字符串在另一个字符串中出现的次数

IsAlpha/IsNumeric/IsWhitespace/IsAsciiPrintable

checks the characters in a String

检查字符串中的字符

DefaultString

protects against a null input String

防止输入字符串为空

Rotate

rotate (circular shift) a String

旋转(循环移位)字符串

Reverse/ReverseDelimited

reverses a String -反转字符串


Abbreviate

abbreviates a string using ellipsis or another given String

使用省略号或另一个给定的String缩写一个字符串

Difference

compares Strings and reports on their differences

比较字符串并报告其差异

LevenshteinDistance

the number of changes needed to change one String into another

将一个String转换为另一个String所需的更改次数