Guava是google推出的一个类库,包含了很多个模块,今天先学习一下其中字符串处理相关的工具类。
通过Maven将Guava的jar包获取到本地,同时获取到其源码和doc文档,将doc文档解压打开后对该类库有一个大概的了解。
字符串相关的处理基本都在com.google.common.base包下,而其中与字符串处理相关的类包含如下几个:
Strings
Strings类提供了一些静态方法,用于进行一些日常遇到的字符串处理工作,其参数为CharSequence或者String类型。
其中CharSequence是一个interface,该接口对字符序列提供了统一的、只读的读取;该接口没有重新定义Object的equals和hashCode方法,因此该接口的实现对象可以按需实现自己的这两个方法。
String,StringBuilder,StringBuffer都实现了该接口。
Strings类中提供了如下的方法:
其中最后一个方法是非public方法,其他的public方法可以分为以下四类:
①null,empty的处理:
nullToEmpty:若为null,则返回空串;否则返回原字符串;
emptyToNull:若为null或”“,则返回null;否则返回原字符串;
isNullOrEmpty:是否为null或”“;
②字符串补齐的处理
padStart:在字符串前append提供的字符,以达到指定长度;
padEnd:在字符串后append提供的字符,以达到指定长度;
③重复方式构造新字符串:
repeat:将给定字符串重复给定次数后返回新串;
④判断是否有相同前缀,相同后缀:
commonPrefix:返回两个CharSequence最长的共同的前缀;
commonSuffix:返回两个CharSequence最长的共同的后缀;
查看源码的时候有一些需要关注和学习的地方:
①如下是repeat方法中的一段,这一段的目的在于判断将String重复n次之后,是否超长了。而其方法则是先将int向上转型为long,后将long向下转型为int,再判断二者是否相等。这样,如果在超长的情况下,将出现截断;
final int len = string.length();