guava字符串工具
在java开发过程中对字符串的处理是非常频繁的,google的guava工具对字符串的一些处理进行优化,使我们开发过程中让自己的代码看去更加美观,清爽。
一、Joiner
根据给定的分隔符把字符串连接到一起。MapJoiner 执行相同的操作,但是针对 Map 的 key 和 value。
分析源码可知:该类构造方法被private修身,无法直接通过new实现,通过调用on传如分隔符来得到实例。
案例
public class JoinerTest { public static void main(String args[]){ //1、将list字符串集合,以,形式转为字符串 List<String> list =new ArrayList<String>(); list.add("xx"); list.add("zz"); list.add("dd"); //Joiner.on(",")获得Joiner实例对象 Joiner joiner = Joiner.on(","); //joiner.join(list)传入操作的集合,并转成字符串格式 System.out.println(joiner.join(list)); //输出结果:xx,zz,dd //2、将Iterator<T>列表,转为字符串 Iterator<String> it=list.iterator(); String str=Joiner.on("|").join(it); System.out.println(str); //输出结果:xx|zz|dd //3、连接多个字符串 String str1=Joiner.on(",").join("小小","爸爸","妈妈","爷爷","奶奶"); System.out.println(str1); //输出:小小,爸爸,妈妈,爷爷,奶奶 //4、连接字符串与列表 StringBuilder builder=new StringBuilder("小小最乖"); //返回StringBuilder类型 StringBuilder str2=Joiner.on(",").appendTo(builder,list); System.out.println(str2); //输出:小小最乖xx,zz,dd //5、跳过null值连接 list.add(null); list.add("小小"); //skipNulls()代表去除null String str3=Joiner.on(",").skipNulls().join(list); System.out.println(str3); //输出:xx,zz,dd,小小 //6、替换null值进行连接 String str4=Joiner.on(",").useForNull("空").join(list); System.out.println(str4); //输出:xx,zz,dd,空,小小 //7、Map的键值对打印出来 Map<String, String> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key3", "value3"); Joiner.MapJoiner mapJoiner = Joiner.on(",").withKeyValueSeparator("="); System.out.println(mapJoiner.join(map)); //输出:key1=value1,key2=value2,key3=value3
//8、一步将字符串转为List<Long>集合(前面先转为list<String>,后面用java8特性将List<String>转为List<Long>) List<Long> list=Splitter.on("#").splitToList("111#222#333").stream().mapToLong(str->Long.parseLong(str)).boxed().distinct().collect(Collectors.toList());
} }
Joiner在实际开发中,用处还是蛮大的。
二、Splitter
主要功能是拆分字符串为集合 Map等。 通过分析源码可知,该工具类是通过on函数传入拆分字符得到实例。
案例:
public class SplitterTest { public static void main(String args[]){ //1、拆分字符串为List集合 String str="小小,妈妈,爸爸,爷爷,奶奶"; Splitter splitter =Splitter.on(","); List<String> list=splitter.splitToList(str); System.out.println(list); //输出:[小小, 妈妈, 爸爸, 爷爷, 奶奶] //2、忽略空字符 String str1="a,b,c,d,,f,g"; //omitEmptyStrings()代表去除空字符串 List<String> list1=Splitter.on(",").omitEmptyStrings().splitToList(str1); System.out.println(list1); //输出:[a, b, c, d, f, g] //3、忽略空字符且去除字符串前后空格 String str2="a,b,c,d,,f, g "; List<String> list2=Splitter.on(",").omitEmptyStrings().trimResults().splitToList(str2); System.out.println(list2); //输出:[a, b, c, d, f, g] } }
三、Strings
案例
public class StringsTest { public static void main(String args[]){ //1、补右全(Strings.padEnd方法) String a="12345"; String b=Strings.padEnd(a, 10, 'x'); System.out.println(b); //输出:12345xxxxx //2、补左全(Strings.padStart) String c=Strings.padStart(a, 10, 'x'); System.out.println(c); //输出:xxxxx12345 //3、校验空值和null String d=""; String f=null; boolean e=Strings.isNullOrEmpty(d); boolean h=Strings.isNullOrEmpty(f); System.out.println(e); System.out.println(h); //输出:true,true //4、如果为null 转为"" String m=null; String n=Strings.nullToEmpty(m); System.out.println(n); //输出: //5、如果为"" 转为null String j=""; String k=Strings.emptyToNull(j); System.out.println(k); //输出:null //6、重复字符串(Strings.repeat) String o="123"; String p=Strings.repeat(o, 3); System.out.println(p); //输出:123123123 //7、获取a,b左公共部分字符串(左边第一个公共部分) String r="abcdsfsfs"; String s="accdc3sfsd"; String t=Strings.commonPrefix(r, s); System.out.println(t); //输出:a //8、获取a,b右公共部分字符串 String w="faaxyz"; String x="fwefxyz"; String z=Strings.commonSuffix(w, x); System.out.println(z); //输出:xyz } }
想太多,做太少,中间的落差就是烦恼。想没有烦恼,要么别想,要么多做。中校【17】