一,前言
在项目里,经常会用到字符串拼接,例如,拼接多个水果名称,用竖线隔开: apple|orange|banana
注意,在最后是没有这个分隔符竖线的,这里我们可能 就需要用到逻辑操作去除最后的竖线。
但是,最近发现一个类可以完美完成以上功能。它就是StringJoiner。
二,StringJoiner
2.1构造函数StringJoiner
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 arguments
this.prefix = prefix.toString();
this.delimiter = delimiter.toString();
this.suffix = suffix.toString();
this.emptyValue = this.prefix + this.suffix;
}
可以看到,一个参数的构造函数,本质也是去调用三个参数的构造函数,具体分析这三个参数代表着什么。
第一个参数,delimiter,表示各个元素之间的分隔符
第二个参数,prefix,表示StringJoiner对象的前缀字符
第三个参数,suffix,表示StringJoiner对象的后缀字符
测试代码:
public class MainTest {
public static void main(String args[]) {
StringJoiner stringJoiner = new StringJoiner("|","1","2");
stringJoiner.add("a");
stringJoiner.add("b");
System.out.println(stringJoiner.toString());
}
}
2.2setEmptyValue
这个方法的作用,就是设置为空时候的默认值。注意,如果你新增了字符之后,再设置它的值,也是不会发生变化的。
测试代码:
public class MainTest {
public static void main(String args[]) {
StringJoiner stringJoiner = new StringJoiner("|","1","2");
stringJoiner.setEmptyValue("xxx");
System.out.println(stringJoiner.toString());
stringJoiner.add("a");
stringJoiner.add("b");
System.out.println(stringJoiner.toString());
stringJoiner.setEmptyValue("=======");
System.out.println(stringJoiner.toString());
}
}
2.3 add方法
新增一个元素到StringJoiner。具体例子请参考2.1 2.2
2.4merge方法
合并一个StringJoiner。
测试代码:
public class MainTest {
public static void main(String args[]) {
StringJoiner stringJoiner1= new StringJoiner("|","1","2");
stringJoiner1.add("a");
stringJoiner1.add("b");
System.out.println(stringJoiner1);
StringJoiner stringJoiner2 = new StringJoiner(";");
stringJoiner2.add("c");
stringJoiner2.add("d");
System.out.println(stringJoiner2);
stringJoiner1.merge(stringJoiner2);
System.out.println(stringJoiner1);
}
}
2.5 length方法
返回StringJoiner长度。
public class MainTest {
public static void main(String args[]) {
StringJoiner stringJoiner1= new StringJoiner("|","1","2");
stringJoiner1.add("a");
stringJoiner1.add("b");
System.out.println(stringJoiner1);
StringJoiner stringJoiner2 = new StringJoiner(";");
stringJoiner2.add("c");
stringJoiner2.add("d");
System.out.println(stringJoiner2);
stringJoiner1.merge(stringJoiner2);
System.out.println(stringJoiner1);
System.out.println(stringJoiner1.length());
}
}
三,总结
StringJoiner在字符串拼接需求的场景非常有用,留下一个笔记。