【小家java】java5新特性(简述十大新特性) 重要一跃
【小家java】java6新特性(简述十大新特性) 鸡肋升级
【小家java】java7新特性(简述八大新特性) 不温不火
【小家java】java8新特性(简述十大新特性) 饱受赞誉
【小家java】java9新特性(简述十大新特性) 褒贬不一
【小家java】java10新特性(简述十大新特性) 小步迭代
【小家java】java11新特性(简述八大新特性) 首个重磅LTS版本
天下没有白吃的午餐,免费永远是这个世界上最贵的东西
上一篇博文已经讲解了lang3下面的很多的API,但是StringUtils留在本文专门讲解。因为这个工具类在日常使用中实在太多了。
本文的讲解方式为:直接看实例,而不做过多的文字描述解释
这个可能用得是非常多的,null和空串都被定义为empty了哟
StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false //注意这里是false
StringUtils.isEmpty("bob") = false
StringUtils.isEmpty(" bob ") = false
任意一个参数为空的话,返回true。如果这些参数都不为空的话返回false。在写一些判断条件的时候,这个方法还是很实用的。
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 //注意这个是false哦
StringUtils.isAnyEmpty("foo", "bar") = false
判断字符对象是不是空字符串,注意与isEmpty的区别。相当于深度的isEmpty
StringUtils.isBlank(null) = true
StringUtils.isBlank("") = true
StringUtils.isBlank(" ") = true //注意此处是null哦 这和isEmpty不一样的
StringUtils.isBlank("bob") = false
StringUtils.isBlank(" bob ") = false
移除字符串两端的空字符串,制表符char <= 32如:\n \t 如果为null返回null
StringUtils.trim(null) = null
StringUtils.trim("") = ""
StringUtils.trim(" ") = ""
StringUtils.trim("abc") = "abc"
StringUtils.trim(" abc ") = "abc"
变体有如下:
public static String trimToNull(String str) //如果是null就返回null,否则trim之后返回
public static String trimToEmpty(String str)
这个方法有时候会很有用的。字符串在另外一个字符串里,出现第Ordinal次的位置
StringUtils.ordinalIndexOf("aabaabaa", "a", 1) = 0
StringUtils.ordinalIndexOf("aabaabaa", "a", 2) = 1
StringUtils.ordinalIndexOf("aabaabaa", "b", 1) = 2
StringUtils.ordinalIndexOf("aabaabaa", "b", 2) = 5
StringUtils.ordinalIndexOf("aabaabaa", "ab", 1) = 1
StringUtils.ordinalIndexOf("aabaabaa", "ab", 2) = 4
StringUtils.ordinalIndexOf("aabaabaa", "", 1) = 0 //空串永远访问0
StringUtils.ordinalIndexOf("aabaabaa", "", 2) = 0 //空串永远访问0
对应的有:lastOrdinalIndexOf方法
是否包含后面数组中的任意对象,返回true(和List里的containsAll有点像)
StringUtils.containsAny(null, *) = false
StringUtils.containsAny("", *) = false
StringUtils.containsAny(*, null) = false
StringUtils.containsAny(*, []) = false
StringUtils.containsAny("zzabyycdxx",['z','a']) = true
StringUtils.containsAny("zzabyycdxx",['b','y']) = true
StringUtils.containsAny("aba", ['z']) = false
这个系列有的时候很有用,特别是下面的衍生方法:
//从左边开始截取指定个数
public static String left(String str,int len)
//从右边开始截取指定个数
public static String right(String str,int len)
//从中间的指定位置开始截取 指定个数
public static String mid(String str,int pos,int len)
默认使用空串Join
StringUtils.join(null) = null
StringUtils.join([]) = ""
StringUtils.join([null]) = ""
StringUtils.join(["a", "b", "c"]) = "abc"
StringUtils.join([null, "", "a"]) = "a"
自定义符号:特定字符串连接数组,很多情况下还是蛮实用,不用自己取拼字符串
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([null, "", "a"], ';') = ";;a" //注意这里和上面的区别
删除空格 这个方法还挺管用的。比trim给力
StringUtils.deleteWhitespace(null) = null
StringUtils.deleteWhitespace("") = ""
StringUtils.deleteWhitespace("abc") = "abc"
StringUtils.deleteWhitespace(" ab c ") = "abc"
删除以特定字符串开头的字符串,如果没有的话,就不删除。
这个方法有时候很管用啊
StringUtils.removeStart(null, *) = null
StringUtils.removeStart("", *) = ""
StringUtils.removeStart(*, null) = *
StringUtils.removeStart("www.domain.com", "www.") = "domain.com"
StringUtils.removeStart("domain.com", "www.") = "domain.com"
StringUtils.removeStart("www.domain.com", "domain") = "www.domain.com" //注意这个结果哟 并没有删除任何东西
StringUtils.removeStart("abc", "") = "abc"
这个方法还是蛮管用的。对于生成统一长度的字符串的时候。
比如生成订单号,为了保证长度统一,可以右边自动用指定的字符补全至指定长度
StringUtils.rightPad(null, *, *) = null
StringUtils.rightPad("", 3, 'z') = "zzz"
StringUtils.rightPad("bat", 3, 'z') = "bat"
StringUtils.rightPad("bat", 5, 'z') = "batzz"
StringUtils.rightPad("bat", 1, 'z') = "bat"
StringUtils.rightPad("bat", -1, 'z') = "bat"
对应的:leftPad 左边自动补全
将字符串扩展到指定的长度。把主体放在中间,两边自动用空串补齐
StringUtils.center(null, *) = null
StringUtils.center("", 4) = " "
StringUtils.center("ab", -1) = "ab"
StringUtils.center("ab", 4) = " ab "
StringUtils.center("abcd", 2) = "abcd"
StringUtils.center("a", 4) = " a "
首字母大、小写
去返大小写 大变小 小变大
StringUtils.swapCase(null) = null
StringUtils.swapCase("") = ""
StringUtils.swapCase("The dog has a BONE") = "tHE DOG HAS A bone"
判断字符串是否全由字母组成 (只要存在汉字、中文、数字都为false)
StringUtils.isAlpha(null) = false
StringUtils.isAlpha("") = false
StringUtils.isAlpha(" ") = false
StringUtils.isAlpha("abc") = true
StringUtils.isAlpha("ab2c") = false
StringUtils.isAlpha("ab-c") = false
字符串翻转
StringUtils.reverse(null) = null
StringUtils.reverse("") = ""
StringUtils.reverse("bat") = "tab"
缩略字符串,省略号要占三位。maxWith小于3位会报错。
这个在大篇幅需要显示的时候,很管用有木有
StringUtils.abbreviate(null, *) = null
StringUtils.abbreviate("", 4) = ""
StringUtils.abbreviate("abcdefg", 6) = "abc..."
StringUtils.abbreviate("abcdefg", 7) = "abcdefg"
StringUtils.abbreviate("abcdefg", 8) = "abcdefg"
StringUtils.abbreviate("abcdefg", 4) = "a..."
StringUtils.abbreviate("abcdefg", 3) = IllegalArgumentException
高级用法:可以自定义缩略的部分内容角标
包装,用后面的字符串对前面的字符串进行包装
其实相当于前后拼了相同的串
StringUtils.wrap(null, *) = null
StringUtils.wrap("", *) = ""
StringUtils.wrap("ab", '\0') = "ab"
StringUtils.wrap("ab", 'x') = "xabx"
StringUtils.wrap("ab", '\'') = "'ab'"
StringUtils.wrap("\"ab\"", '\"') = "\"\"ab\"\""
这些都不解释了。处理数组可变参数而已
判断字符串所有字符是否都是大、小写
若群二维码失效,请加微信号(或者扫描下方二维码):fsx641385712。
并且备注:“java入群” 字样,会手动邀请入群