[每天一个知识点]14-Java语言-字符串拼接
来源:互联网 发布:网络架构是什么 编辑:程序博客网 时间:2024/06/10 07:51
在字符串处理操作中,非常常用的一个功能是将一个字符串数组或者字符串集合使用某种分隔符拼接为单一的字符串(需要注意拼接操作往往是不可逆的)。除了丑陋的自己写之外,常用的方式还有下面几种:
1. Java8的String.join
2. Guava的Joiner
3. Apache commons-lang3的StringUtils
这3者都能实现最基本的功能,但是在细节上还是有很多不同,使用时值得注意选择。简要说起来主要区别如下:
1. Java8的String.join实现最简单,但是它会将null输出为"null"
2. Guava的Joiner提供的连贯接口,如果不指定如何处理null则遇到null时会抛出NPE,可以指定跳过null,也可以指定将null转换为何种字符串
3. Apache commons-lang3的StringUtils提供的方法直接将null转换为空字符串,对于数组输入可以指定只拼接其中一部分
下面是代码和对应的输出
package blog.java;import java.util.Arrays;import java.util.List;import org.apache.commons.lang3.StringUtils;import org.testng.annotations.DataProvider;import org.testng.annotations.Test;import com.google.common.base.Joiner;public class S14 {@DataProviderpublic Object[][] list() {String[] array = { "a", "b", null, "c", "", "d" };List<String> list = Arrays.asList(array);return new Object[][] { new Object[] { array, list } };}@Test(dataProvider = "list")public void testJava8Join(String[] array, List<String> list) {// "a, b, null, c, , d"System.out.println(String.join(", ", array));// "a, b, null, c, , d"System.out.println(String.join(", ", list));}@Test(dataProvider = "list")public void testLang3StringUtils(String[] array, List<String> list) {// "a, b, , c, , d"System.out.println(StringUtils.join(array, ", "));// "a, b, , c, , d"System.out.println(StringUtils.join(list, ", "));// "a, b, , c"System.out.println(StringUtils.join(array, ", ", 0, 4));}@Test(dataProvider = "list")public void testGuavaJoiner(String[] array, List<String> list) {// java.lang.NullPointerExceptionSystem.out.println(Joiner.on(", ").join(array));// java.lang.NullPointerExceptionSystem.out.println(Joiner.on(", ").join(list));// "a, b, c, , d"System.out.println(Joiner.on(", ").skipNulls().join(array));// "a, b, c, , d"System.out.println(Joiner.on(", ").skipNulls().join(list));// "a, b, nullString, c, , d"System.out.println(Joiner.on(", ").useForNull("nullString").join(array));// "a, b, nullString, c, , d"System.out.println(Joiner.on(", ").useForNull("nullString").join(list));}}
0 0
- [每天一个知识点]14-Java语言-字符串拼接
- [每天一个知识点]15-Java语言-字符串连接
- [每天一个知识点]21-Java语言-MultiCatch
- [每天一个知识点]30-Java语言-asList
- [每天一个知识点]4-Java语言String.format
- [每天一个知识点]6-Java语言-char和code point
- [每天一个知识点]9-Java语言-CharSequence是什么
- [每天一个知识点]10-Java语言-正则表达式使用
- [每天一个知识点]11-Java语言-String.split
- [每天一个知识点]17-Java语言-@Override注解
- [每天一个知识点]20-Java语言-菱形运算符
- [每天一个知识点]22-Java语言-二进制字面值
- [每天一个知识点]18-Java语言-在switch中接受String类型
- [每天一个知识点]29-C语言-printf的格式符*
- 每天一个知识点(1)
- R语言字符串拼接
- C语言字符串拼接
- java语言基础(54)——变量字符串拼接和常量字符串拼接的区别
- Python 错误和异常小结
- N后问题
- Android:Layout_weight的深刻理解
- 黑马程序员 —OC(Foundation)
- winform滚动字幕
- [每天一个知识点]14-Java语言-字符串拼接
- 网上交易的守护者-数字证书
- 1073.Scientific Notation
- JS_对象创建的几种方式
- MyEclipse2014安装插件的几种方式
- 1074.Reversing Linked List
- 解决pyside-uic编译QBottonGroup的报错:unexpected error in pyside-uic
- 1075.PAT Judge
- 1076.Forwards on Weibo