在日常开发中,我们经常会遇到这样的任务:将多个字符串组合起来,并通过一个分隔符将它们分隔开来。例如:拼接文件地址
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/name
String.join() 方法定义如下:
static String join(CharSequence delimiter, CharSequence... elements) 返回由 CharSequence 元素副本和指定分隔符副本组成的新字符串。
static String join(CharSequence delimiter, Iterable<? extends CharSequence> elements) 返回由 CharSequence 元素副本和指定分隔符副本组成的新字符串。
我们可以将 join 想象成一个与 String.split 实例方法相反的方法。它是 Java8 为 String 类添加的唯一一个方法。