探索StringUtils3之StringUtils.isEmpty()和StringUtils.isBlank()的區別

也許你兩個都不知道,也許你除了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;
    }

StringUtils.isNotEmpty()

>>>相當於不爲空 , = !isEmpty()

public static boolean isNotEmpty(final CharSequence cs) {
        return !isEmpty(cs);
    }

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
	/**
     * @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()

>>>相當於!isAnyEmpty(css) , 必須所有的值都不爲空才返回true

    /**
     * <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);
    }    

#isBank系列

StringUtils.isBlank()

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

  • StringUtils.isBlank(null) = true
  • StringUtils.isBlank("") = true
  • StringUtils.isBlank(" ") = true
  • StringUtils.isBlank(“bob”) = false
  • StringUtils.isBlank(" bob ") = false
    /**
     * <p>Checks if a CharSequence is whitespace, empty ("") or null.</p>
     * @param cs  the CharSequence to check, may be null
     * @return {@code true} if the CharSequence is null, empty or whitespace
     * @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)) == false) {
                return false;
            }
        }
        return true;
    }

StringUtils.isNotBlank()

>>> 是否真的不爲空,不是空格或者空值 ,相當於!isBlank();

public static boolean isNotBlank(final CharSequence cs) {
        return !isBlank(cs);
    }

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;
    }

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);
    }

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所需的更改次數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章