【Java杂记】工具类:字符串工具类 StringUtils

780 阅读2分钟

String 除了自身定义的那些方法外,还有个 StringUtils 类封装了许多对 String 的操作方法(都是静态方法),方便平时的开发工作。这里放个传送门把 String最细源码分析&StringBuffer原理对比,对 String 源码感兴趣的同学可以参考一下。好了,下面进入正文...

1.isEmpty:非空判断

public static boolean isEmpty(String str)
StringUtils.isEmpty(null)      = true
StringUtils.isEmpty("")        = true
StringUtils.isEmpty(" ")       = false
StringUtils.isEmpty("bob")     = false
StringUtils.isEmpty("  bob  ") = false

2.is(Not)Blank:非空判断(不含空字符)

public static boolean isBlank(String str)
public static boolean isNotBlank(String str)    
StringUtils.isBlank(null)      = true
StringUtils.isBlank("")        = true
StringUtils.isBlank(" ")       = true // isEmpty此时是false
StringUtils.isBlank("bob")     = false
StringUtils.isBlank("  bob  ") = false

3.equals:相等判断

public static boolean equals(String str1,String str2)
StringUtils.equals(null, null)   = true // null和null也是true
 StringUtils.equals(null, "abc")  = false
 StringUtils.equals("abc", null)  = false
 StringUtils.equals("abc", "abc") = true
 StringUtils.equals("abc", "ABC") = false // 这里可以用equalsIgnoreCase

4.contains(IgnoreCase):包含判断

public static boolean contains(String str,char searchChar) // 可以判断是否包含某个字符
public static boolean containsIgnoreCase(String str,String searchStr) // 可以判断是否包含某个字符串
StringUtils.contains(null, *)     = false
StringUtils.contains(*, null)     = false
StringUtils.contains("", "")      = true
StringUtils.contains("abc", "")   = true // 任何字符串对空字符都是包含
StringUtils.contains("abc", "a")  = true
StringUtils.contains("abc", "z")  = false

5.replace:替换

// 返回替换后的新字符串
public static String replace(String text,String searchString,String replacement)
 StringUtils.replace(null, *, *)        = null
 StringUtils.replace("", *, *)          = ""
 StringUtils.replace("any", null, *)    = "any"
 StringUtils.replace("any", *, null)    = "any" // 代替字符为null无效
 StringUtils.replace("any", "", *)      = "any"
 StringUtils.replace("aba", "a", null)  = "aba"
 StringUtils.replace("aba", "a", "")    = "b"
 StringUtils.replace("aba", "a", "z")   = "zbz" // all

6.join:连接数组成字符串

// 返回连接后的新字符串。separator是连接符
public static String join(Object[] array,String separator);
StringUtils.join(null, *)                = null
StringUtils.join([], *)                  = ""
StringUtils.join([null], *)              = ""
StringUtils.join(["a", "b", "c"], "--")  = "a--b--c"
StringUtils.join(["a", "b", "c"], null)  = "abc" // 可以中间什么分隔符都没有
StringUtils.join(["a", "b", "c"], "")    = "abc"
StringUtils.join([null, "", "a"], ',')   = ",,a"

7.trimToNull/Empty:去首尾空字符

移除字符串首尾char<32(ASCII<32)的字符,如果该字符串是null或empty(“”)

public static String trimToNull(String str) // 返回null
public static String trimToEmpty(String str) // 返回""
StringUtils.trimToNull(null)          = null
StringUtils.trimToNull("")            = null
StringUtils.trimToNull("     ")       = null
StringUtils.trimToNull("abc")         = "abc"
StringUtils.trimToNull("    abc    ") = "abc"
StringUtils.trimToNull("    a b c    ") = "a b c"
    
StringUtils.trimToEmpty(null)          = ""
StringUtils.trimToEmpty("")            = ""
StringUtils.trimToEmpty("     ")       = ""
StringUtils.trimToEmpty("abc")         = "abc"
StringUtils.trimToEmpty("    abc    ") = "abc"

最后,再放一张图最为总结: 在这里插入图片描述