Joiner 和 Spliter的介绍和使用
Joiner : 主要用于字符串之间的拼接
-
on() 参数为字符串或者字符,在进行拼接时联系元素
-
skipNulls() 无参数,在进行拼接时,如果有元素为空,则跳过这个元素
-
useForNull() 参数为非空字符串,在进行拼接时,如果有元素为空,使用参数替换这个元素
-
appentdTo() 和 join() 两者的区别主要是在参数上。看源码就能发现,Joiner中的 join() 方法还是去
调用的appentdTo()方法,两者灵活选择
-
栗子:
public class JoinerDemo {
public static void main(String[] args) {
/*
on:制定拼接符号
skipNulls():忽略NULL,返回一个新的Joiner实例
useForNull(“Hello”):NULL的地方都用字符串”Hello”来代替
*/
StringBuilder sb = new StringBuilder();
Joiner.on(",").skipNulls().appendTo(sb, "Hello", "guava");
//Hello,guava
System.out.println(sb);
StringBuilder sb1 = new StringBuilder();
String[] strings = {"Hello", null,"guava"};
Joiner.on(".").skipNulls().appendTo(sb1, strings);
//Hello,guava
System.out.println(sb);
//1,none,3
System.out.println(Joiner.on(",").useForNull("none").join(1, null, 3));
//1,2,3,4,6
System.out.println(Joiner.on(",").skipNulls().join(Arrays.asList(1, 2, 3, 4, null, 6)));
//图转换为字符串
Map<String, String> map = new HashMap<String, String>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
//key3=value3,key2=value2,key1=value1
System.out.println(Joiner.on(",").withKeyValueSeparator("=").join(map));
}
}
Spliter : 主要用于字符串之间的分割
-
on() 参数为字符串或者字符或者正则表达式,以此进行字符串分割
-
fixedLength() 参数为int,按照定长来进行字符串分割
-
trimResults() 无参,分割时忽略空字符串元素
-
omitEmptyStrings() 无参,分割时去掉元素前后的空格
-
splitToList()和split() 的区别主要是在转换结果的不同,两者灵活选择
-
栗子:
public class SplitterDemo {
public static void main(String[] args){
String s = "a,b,c,d,e,";
Iterable<String> split = Splitter.on(",").trimResults().split(s);
Iterator iterator = split.iterator();
//abcde
while (iterator.hasNext()){
System.out.print(iterator.next());
}
List<String> strings = Splitter.on(",").trimResults().splitToList(s);
//[a, b, c, d, e, ]
System.out.println(strings);
List<String> strings1 = Splitter.fixedLength(2).splitToList(s);
//[a,, b,, c,, d,, e,]
System.out.println(strings1);
List<String> stringList =
Splitter.on(",").trimResults().omitEmptyStrings().splitToList(s);
//[a, b, c, d, e]
System.out.println(stringList);
//字符串转换为图
String map = "1:z;2:x;3:c";
Map<String, String> stringMap = Splitter.on(";").withKeyValueSeparator(":").split(map);
for (String strSet : stringMap.keySet()) {
System.out.println(stringMap.get(strSet));
}
}
}