String-Join操作
1.字符串之间分隔符
StringJoiner sj=new StringJoiner(",");
sj.add("aaa");
sj.add("bbb");
sj.add("ccc");
System.out.println(sj.toString());
运行结果
aaa,bbb,ccc
2.给字符串加前缀后缀以及分隔符
StringJoiner sj=new StringJoiner("/","prefix-","-suffix");
sj.add("2017");
sj.add("12");
sj.add("15");
System.out.println(sj.toString());
运行结果
prefix-2016/02/26-suffix
3.String.join
String的静态方法可以在不创建StringJoiner类的情况下拥有上述功能
String result = String.join("-", "2017", "12", "15");
System.out.println(result);
运行结果
2017-12-15
利用List完成上述功能
List<String> list = Arrays.asList("苹果", "香蕉", "榴莲");
String result = String.join(",", list);
System.out.println(result);
运行结果
苹果,香蕉,榴莲
也可以使用Stream API完成上述的操作
System.out.println(list.stream().map(String::toUpperCase).collect(Collectors.joining(", ")));
遍历字符串
在java8中CharSequence接口添加了一个方法叫做chars()
public default IntStream chars()
default关键字修饰的接口方法是java8新添加的新特性,木得事向接口中添加已经实现的方法.chars()方法返回了一个IntStream类型,所有实现了CharSequence接口的类型,String,StringBuffer,StringBuilder类等都会返回一个IntStream类型
不过使用上还需要注意
string.chars().forEach(System.out::println);
上面这行代码运行结果都是数字
为了得到字符,我们可以这样操作
string.chars().mapToObj(ch -> Character.valueOf((char) ch)).forEach(System.out::print);
利用map接口转换成字符再进行下一步处理
那么这个接口有什么用呢?下面是chars()运用的实例
string.chars().filter(ch -> Character.isDigit(ch)).forEach(ch->System.out.print((char)ch));
这行代码筛选并输出字符串的所有数字
这个接口新增方法也是java为支持函数式编程的一个体现