前言
上一篇博文已经讲解了lang3下面的很多的API,但是StringUtils留在本文专门讲解。因为这个工具类在日常使用中实在太多了。
本文的讲解方式为:直接看实例,而不做过多的文字描述解释
实例
public static boolean isEmpty(CharSequence cs)
这个可能用得是非常多的,null和空串都被定义为empty了哟
StringUtils.isEmpty(null) = true StringUtils.isEmpty("") = true StringUtils.isEmpty(" ") = false //注意这里是false StringUtils.isEmpty("bob") = false StringUtils.isEmpty(" bob ") = false
public static boolean isAnyEmpty(CharSequence… css)
任意一个参数为空的话,返回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
public static boolean isNoneEmpty(CharSequence… css) 和isAnyEmpty取返
public static boolean isBlank(CharSequence cs)
判断字符对象是不是空字符串,注意与isEmpty的区别。相当于深度的isEmpty
StringUtils.isBlank(null) = true StringUtils.isBlank("") = true StringUtils.isBlank(" ") = true //注意此处是null哦 这和isEmpty不一样的 StringUtils.isBlank("bob") = false StringUtils.isBlank(" bob ") = false
isAnyBlank、isNoneBlank这里就不再解释了
public static String trim(String str)
移除字符串两端的空字符串,制表符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)
public static int ordinalIndexOf(CharSequence str, CharSequence searchStr,int ordinal)
这个方法有时候会很有用的。字符串在另外一个字符串里,出现第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方法
public static boolean containsAny(CharSequence cs,char… searchChars)
是否包含后面数组中的任意对象,返回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 substring(String str,int start)
这个系列有的时候很有用,特别是下面的衍生方法:
//从左边开始截取指定个数 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)
public static String join(T… elements)、public static String join(Object[] array,char separator)
默认使用空串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" //注意这里和上面的区别