提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- StringJoiner
- 构造函数
- 成员变量
- 公开方法
- 1.构造函数
- 2. add() 添加字符串
- 3. setEmptyValue 输出指定字符串
- StringJoiner案例
- 案例1
- 案例2
StringJoiner
StringJoiner是Java8新出的用于处理字符串拼接的工具类,可以让你的代码看起来更优雅,不拉跨。
构造函数
public StringJoiner(CharSequence delimiter) {this(delimiter, "", "");}public StringJoiner(CharSequence delimiter,CharSequence prefix,CharSequence suffix) {Objects.requireNonNull(prefix, "The prefix must not be null");Objects.requireNonNull(delimiter, "The delimiter must not be null");Objects.requireNonNull(suffix, "The suffix must not be null");// make defensive copies of argumentsthis.prefix = prefix.toString();this.delimiter = delimiter.toString();this.suffix = suffix.toString();this.emptyValue = this.prefix + this.suffix;}
StringJoiner 一共有 2 个构造函数。
- 一个是只需要传入分隔符(前缀和后缀默认是"")
- 一个是要求传入分隔符、前缀和后缀
成员变量
- prefix:拼接后的字符串前缀
- delimiter:拼接时的字符串分隔符
- suffix:拼接后的字符串后缀
- value:拼接后的值
- emptyValue:空值的情况,value为 null 时返回
公开方法
- setEmptyValue:设置空值
- toString:转换成 String
- add:添加字符串
- merge:从另一个 StringJoiner 合并
- length:长度(包括前缀后缀)
1.构造函数
2. add() 添加字符串
@Testpublic void Test3() throws Exception {//分隔符 为空字符串StringJoiner sj = new StringJoiner("");sj.add("Java 8");sj.add("Java 11");System.out.println(sj.toString());//分隔符 为 ":"StringJoiner sj1 = new StringJoiner(":");sj1.add("Java 8");sj1.add("Java 11");System.out.println(sj1.toString());//分隔符 为 ":" ,前缀 "[" ,后缀 "]"StringJoiner sj2 = new StringJoiner(":","[","]");sj2.add("Java8").add("Java11").add("Java15");System.out.println(sj2.toString());}
- 当我们使用StringJoiner(CharSequence delimiter)初始化一个StringJoiner的时候,这个delimiter其实是分隔符,并不是字符串的初始值。
- StringJoiner(CharSequence delimiter,CharSequence prefix,CharSequence suffix)的第二个和第三个参数分别是拼接后的字符串的前缀和后缀。
3. setEmptyValue 输出指定字符串
StringJoiner案例
案例1
- 假设现在遍历一个字符串集合,需求是每个元素按照 “.” 分开。
@Testpublic void Test5() throws Exception {String a = "w", b = "d", c = "n", d = "m", e = "d";List<String> list = new ArrayList<>();list.add(a);list.add(b);list.add(c);list.add(d);list.add(e);String result = "";for (String str : list) {result += str + ".";}// 最后在处理掉最后一个 “.” 齐活儿,收工System.err.println(result.substring(0, result.length() - 1));StringBuilder builder = new StringBuilder();list.forEach(str -> builder.append(str).append("."));System.err.println(builder.toString().substring(0, builder.length() - 1));// 声明StringJoiner, 每个元素通过 "." 分割StringJoiner joiner = new StringJoiner(".");list.forEach(joiner::add);System.err.println(joiner.toString());}
案例2
@Testpublic void Test2() throws Exception {String organize_name = "花旗银行集团/风云银行境内分支机构汇总/花旗银行广西壮族自治区分行(全辖汇总)/花旗银行广西桂林支行";StringJoiner joiner = new StringJoiner("/");String[] orgName = organize_name.split("/");for (int i = 0; i < orgName.length; i++) {if (i == 0 || i == 1) {continue;}joiner.add(orgName[i].replaceAll("FTU|(全辖汇总)|花旗银行", ""));}System.out.println(joiner.toString());}