当前位置: 代码迷 >> 综合 >> StringUtils工具类方法汇总1(空校验、去字符处理、字符串比较)
  详细解决方案

StringUtils工具类方法汇总1(空校验、去字符处理、字符串比较)

热度:23   发布时间:2023-10-25 16:29:12.0

       Apache commons lang3包下的StringUtils工具类中封装了一些字符串操作的方法,非常实用,使用起来也非常方便。StringUtils类在操作字符串时,即使操作的为null值也是安全的,不会报NullPointerException,这一点在后面的例子中再具体说明。因此,在操作字符串时使用StringUtils相比使用原生的String会更加安全。

1.字符串空校验

   /*** 检查字符串是否为空 ("") 或 null* StringUtils.isEmpty(null)      = true* StringUtils.isEmpty("")        = true* StringUtils.isEmpty(" ")       = false* StringUtils.isEmpty("bob")     = false* StringUtils.isEmpty("  bob  ") = false*/public static boolean isEmpty(String str) {return str == null || str.length() == 0;}
    /***  检查字符串是否为非空* StringUtils.isNotEmpty(null)      = false* StringUtils.isNotEmpty("")        = false* StringUtils.isNotEmpty(" ")       = true* StringUtils.isNotEmpty("bob")     = true* StringUtils.isNotEmpty("  bob  ") = true*/public static boolean isNotEmpty(String str) {return !StringUtils.isEmpty(str);}
    /*** 检验字符串是否是null,空或空格* StringUtils.isBlank(null)      = true* StringUtils.isBlank("")        = true* StringUtils.isBlank(" ")       = true* StringUtils.isBlank("bob")     = false* StringUtils.isBlank("  bob  ") = false*/public static boolean isBlank(String str) {int strLen;if (str == null || (strLen = str.length()) == 0) {return true;}for (int i = 0; i < strLen; i++) {if ((Character.isWhitespace(str.charAt(i)) == false)) {return false;}}return true;}
    /*** 检验字符串是否是非null,非空且非空格* StringUtils.isNotBlank(null)      = false* StringUtils.isNotBlank("")        = false* StringUtils.isNotBlank(" ")       = false* StringUtils.isNotBlank("bob")     = true* StringUtils.isNotBlank("  bob  ") = true* </pre>*/public static boolean isNotBlank(String str) {return !StringUtils.isBlank(str);}

2.去字符处理

    /*** 从该字符串的两端删除控制字符,返回值为null则处理为(“”),返回值为(“”)则处理为(“”)(@link #trimToEmpty(String))* StringUtils.clean(null)          = ""* StringUtils.clean("")            = ""* StringUtils.clean("abc")         = "abc"* StringUtils.clean("    abc    ") = "abc"* StringUtils.clean("     ")       = ""*/public static String clean(String str) {return str == null ? EMPTY : str.trim();}
    /*** 从该字符串的两端删除控制字符,返回值为null则处理为null,返回值为("")则处理为("")* StringUtils.trim(null)          = null* StringUtils.trim("")            = ""* StringUtils.trim("     ")       = ""* StringUtils.trim("abc")         = "abc"* StringUtils.trim("    abc    ") = "abc"*/public static String trim(String str) {return str == null ? null : str.trim();}
    /*** 从该字符串的两端删除控制字符,返回值为null或(“”)则处理为null* StringUtils.trimToNull(null)          = null* StringUtils.trimToNull("")            = null* StringUtils.trimToNull("     ")       = null* StringUtils.trimToNull("abc")         = "abc"* StringUtils.trimToNull("    abc    ") = "abc"*/public static String trimToNull(String str) {String ts = trim(str);return isEmpty(ts) ? null : ts;}
    /*** 从该字符串的两端删除控制字符,返回值为null则处理为(""),返回值为("")则处理为("")* StringUtils.trimToEmpty(null)          = ""* StringUtils.trimToEmpty("")            = ""* StringUtils.trimToEmpty("     ")       = ""* StringUtils.trimToEmpty("abc")         = "abc"* StringUtils.trimToEmpty("    abc    ") = "abc"*/public static String trimToEmpty(String str) {return str == null ? EMPTY : str.trim();}
    /*** 从字符串的开头和结尾删除空格,返回值为null则处理为null,返回值为(“”)则处理为(“”)* StringUtils.strip(null)     = null* StringUtils.strip("")       = ""* StringUtils.strip("   ")    = ""* StringUtils.strip("abc")    = "abc"* StringUtils.strip("  abc")  = "abc"* StringUtils.strip("abc  ")  = "abc"* StringUtils.strip(" abc ")  = "abc"* StringUtils.strip(" ab c ") = "ab c"*/public static String strip(String str) {return strip(str, null);}
    /*** 从字符串的开头和结尾删除空格,返回值为null则处理为null,返回值为("")则处理为null* StringUtils.stripToNull(null)     = null* StringUtils.stripToNull("")       = null* StringUtils.stripToNull("   ")    = null* StringUtils.stripToNull("abc")    = "abc"* StringUtils.stripToNull("  abc")  = "abc"* StringUtils.stripToNull("abc  ")  = "abc"* StringUtils.stripToNull(" abc ")  = "abc"* StringUtils.stripToNull(" ab c ") = "ab c"*/public static String stripToNull(String str) {if (str == null) {return null;}str = strip(str, null);return str.length() == 0 ? null : str;}
    /*** 从字符串的开头和结尾删除空格,返回值为null则处理为(""),返回值为("")则处理为("")* StringUtils.stripToEmpty(null)     = ""* StringUtils.stripToEmpty("")       = ""* StringUtils.stripToEmpty("   ")    = ""* StringUtils.stripToEmpty("abc")    = "abc"* StringUtils.stripToEmpty("  abc")  = "abc"* StringUtils.stripToEmpty("abc  ")  = "abc"* StringUtils.stripToEmpty(" abc ")  = "abc"* StringUtils.stripToEmpty(" ab c ") = "ab c"*/public static String stripToEmpty(String str) {return str == null ? EMPTY : strip(str, null);}
   /*** 从一个字符串的开始和结束中删除任何一组字符。这与{@link String#trim()}类似,但允许控制字符的去除。* StringUtils.strip(null, *)          = null* StringUtils.strip("", *)            = ""* StringUtils.strip("abc", null)      = "abc"* StringUtils.strip("  abc", null)    = "abc"* StringUtils.strip("abc  ", null)    = "abc"* StringUtils.strip(" abc ", null)    = "abc"* StringUtils.strip("  abcyx", "xyz") = "  abc"*/public static String strip(String str, String stripChars) {if (isEmpty(str)) {return str;}str = stripStart(str, stripChars);return stripEnd(str, stripChars);}
   /*** 从一个字符串的开始和结束中删除任何一组字符,去除前端的控制符。* StringUtils.stripStart(null, *)          = null* StringUtils.stripStart("", *)            = ""* StringUtils.stripStart("abc", "")        = "abc"* StringUtils.stripStart("abc", null)      = "abc"* StringUtils.stripStart("  abc", null)    = "abc"* StringUtils.stripStart("abc  ", null)    = "abc  "* StringUtils.stripStart(" abc ", null)    = "abc "* StringUtils.stripStart("yxabc  ", "xyz") = "abc  "*/public static String stripStart(String str, String stripChars) {int strLen;if (str == null || (strLen = str.length()) == 0) {return str;}int start = 0;if (stripChars == null) {while ((start != strLen) && Character.isWhitespace(str.charAt(start))) {start++;}} else if (stripChars.length() == 0) {return str;} else {while ((start != strLen) && (stripChars.indexOf(str.charAt(start)) != INDEX_NOT_FOUND)) {start++;}}return str.substring(start);}
    /*** 从一个字符串的开始和结束中删除任何一组字符,去除后端的控制符。* StringUtils.stripEnd(null, *)          = null* StringUtils.stripEnd("", *)            = ""* StringUtils.stripEnd("abc", "")        = "abc"* StringUtils.stripEnd("abc", null)      = "abc"* StringUtils.stripEnd("  abc", null)    = "  abc"* StringUtils.stripEnd("abc  ", null)    = "abc"* StringUtils.stripEnd(" abc ", null)    = " abc"* StringUtils.stripEnd("  abcyx", "xyz") = "  abc"* StringUtils.stripEnd("120.00", ".0")   = "12"*/public static String stripEnd(String str, String stripChars) {int end;if (str == null || (end = str.length()) == 0) {return str;}if (stripChars == null) {while ((end != 0) && Character.isWhitespace(str.charAt(end - 1))) {end--;}} else if (stripChars.length() == 0) {return str;} else {while ((end != 0) && (stripChars.indexOf(str.charAt(end - 1)) != INDEX_NOT_FOUND)) {end--;}}return str.substring(0, end);}

3.去除数组对象中的字符处理

    /*** 将数组中的每个字符串两端的空格删除。* Whitespace is defined by {@link Character#isWhitespace(char)}.</p>* StringUtils.stripAll(null)             = null* StringUtils.stripAll([])               = []* StringUtils.stripAll(["abc", "  abc"]) = ["abc", "abc"]* StringUtils.stripAll(["abc  ", null])  = ["abc", null]*/public static String[] stripAll(String[] strs) {return stripAll(strs, null);}
    /*** 将数组中的每个字符串的开头和结尾开始删除任何一组字符。* StringUtils.stripAll(null, *)                = null* StringUtils.stripAll([], *)                  = []* StringUtils.stripAll(["abc", "  abc"], null) = ["abc", "abc"]* StringUtils.stripAll(["abc  ", null], null)  = ["abc", null]* StringUtils.stripAll(["abc  ", null], "yz")  = ["abc  ", null]* StringUtils.stripAll(["yabcz", null], "yz")  = ["abc", null]** @param strs  从中删除字符的数组可能为空* @param stripChars  要删除的字符,空值视为空白*/public static String[] stripAll(String[] strs, String stripChars) {int strsLen;if (strs == null || (strsLen = strs.length) == 0) {return strs;}String[] newArr = new String[strsLen];for (int i = 0; i < strsLen; i++) {newArr[i] = strip(strs[i], stripChars);}return newArr;}

4.字符串比较

    /*** 比较两个字符串,如果它们相等,则返回 true 。* StringUtils.equals(null, null)   = true* StringUtils.equals(null, "abc")  = false* StringUtils.equals("abc", null)  = false* StringUtils.equals("abc", "abc") = true* StringUtils.equals("abc", "ABC") = false*/public static boolean equals(String str1, String str2) {return str1 == null ? str2 == null : str1.equals(str2);}
    /*** 比较两个字符串,如果它们相同,则返回 true ,忽略大小写。** <p><code>null</code>s are handled without exceptions. Two <code>null</code>* references are considered equal. Comparison is case insensitive.</p>** <pre>* StringUtils.equalsIgnoreCase(null, null)   = true* StringUtils.equalsIgnoreCase(null, "abc")  = false* StringUtils.equalsIgnoreCase("abc", null)  = false* StringUtils.equalsIgnoreCase("abc", "abc") = true* StringUtils.equalsIgnoreCase("abc", "ABC") = true* </pre>** @see java.lang.String#equalsIgnoreCase(String)* @param str1  the first String, may be null* @param str2  the second String, may be null* @return <code>true</code> if the Strings are equal, case insensitive, or*  both <code>null</code>*/public static boolean equalsIgnoreCase(String str1, String str2) {return str1 == null ? str2 == null : str1.equalsIgnoreCase(str2);}