在日常开发中,我们经常会遇到这样的任务:将多个字符串组合起来,并通过一个分隔符将它们分隔开来。例如:拼接文件地址
String dir = ...; String year = ...; String month = ...; String day = ...; String name = ...; String filePath = dir + "/" + year + "/" + month + "/" + day + "/" + name;
往往为了方便,我们通常在项目中引入“commons-lang3”组件来实现该任务,例如:
import org.apache.commons.lang3.StringUtils;
//...
String str = StringUtils.joinWith("/", "dir", "year", "month", "day", "name");
System.out.println(str);
//结果:
//dir/year/month/day/name幸运的是,现在这个任务已经被添加到 Java8 中。字符串可以来自于一个数组或者一个 Iterable<?extends CharSequence> 对象:
String str = String.join("/", "dir", "year", "month", "day", "name");
System.out.println(str);
//结果:
//dir/year/month/day/name
str = String.join("/", Arrays.asList("dir", "year", "month", "day", "name"));
System.out.println(str);
//结果:
//dir/year/month/day/nameString.join() 方法定义如下:
static String join(CharSequence delimiter, CharSequence... elements) 返回由 CharSequence 元素副本和指定分隔符副本组成的新字符串。
static String join(CharSequence delimiter, Iterable<? extends CharSequence> elements) 返回由 CharSequence 元素副本和指定分隔符副本组成的新字符串。
我们可以将 join 想象成一个与 String.split 实例方法相反的方法。它是 Java8 为 String 类添加的唯一一个方法。