在日常工作中,对String的处理可以说处处可见,也偶尔用到StringUitls工具类,今天对照着这个工具类源码,我们来看看,它到底有哪些工具方法,能做什么,怎么实现的.
包名:org.apache.commons.lang3(比org.apache.commons.lang包下的StringUtils的版本更高一些)
1.isEmpty
参数:CharSequence cs;
返回值 :boolean
很简单,就是判断参数是否为空,是否长度为0.
这里我们说一下CharSequence这个接口.
打开这个接口,它定义了以上几个抽象方法,我们都很熟悉,获取长度,查找对应索引位置的字符,根据索引切割字符等等...
以下下都属于CharSequence接口实现类:CharBuffer、String、StringBuffer、StringBuilder。
根据多态性质,也就意味着isEmpty方法可以判断以上数据类型的参数是否为空.
然后isNotEmpty就是加了个"非",返回相反的值啦!
2.isAnyEmpty
参数:CharSequence css ,可变参数.
返回值:boolean
判断一组参数,是否有一个为空,有一个就返回true.
这里有一个值得学习的地方,就是遍历数组时,一般都为了方便写for(int i = 0 ; i <= arr.length ; i++)
更好的做法应该是在数组遍历时,将数组的长度赋值给固定变量,不需要每次都去arr.length获取,然后再对比.
3.isNoneEmpty
同样.返回isAnyEmpty的"非";
4.isBlank
与isEmpty功能一样,判断是否为空,只是更细致.
与isEmpty的区别:不仅不能为空,同时判断指定字符是否为空白字符.空白符包含:空格、tab键、换行符。
isNotBlank同上
5.isAnyBlank
同样,判断一组参数中,是否有空的,有一个就返回true;
使用的是isBlank()进行判断.所以空格,tab键,换行符.都属于空
isNoneBlank方法同上
6.trim
用于去除前后空格;
这里就是调用String类中的trim,看一下实现:
1.拿到目标字符串的字符长度len,和初始索引值st=0;
2.循环对比出目标字符串左边的空格个数,得到除空格后的前后两个索引值给len和st;
3.通过两个索引截取出字符串,得到的就是去除前后两端空格的字符串