2019独角兽企业重金招聘Python工程师标准>>>

首发csdn,osc延后更新

在字符串处理操作中,非常常用的一个功能是将一个字符串数组或者字符串集合使用某种分隔符拼接为单一的字符串(需要注意拼接操作往往是不可逆的)。除了丑陋的自己写之外,常用的方式还有下面几种:

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 {  @DataProvider  public 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.NullPointerException  System.out.println(Joiner.on(", ").join(array));  // java.lang.NullPointerException  System.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));  }  }

转载于:https://my.oschina.net/u/1762727/blog/371874

[每天一个知识点]14-Java语言-字符串拼接相关推荐

  1. c语言向字符串追加一个字符串,C语言字符串拼接和追加.doc

    C语言字符串拼接和追加.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档 ...

  2. Java案例——字符串拼接

    Java案例--字符串拼接案例 1.案例需求 定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果 例如,数字为int[] arr = {1,2,3}; ...

  3. JAVA的字符串拼接与性能

    概述:本文主要研究的是JAVA的字符串拼接的性能,原文中的测试代码在功能上并不等价,导致concat的测试意义不大.不过原作者在评论栏给了新的concat结果,如果有兴趣的同学建议自己修改代码测试. ...

  4. java 语言 写字板_一个简单的java语言写字板.docx

    一个简单的java语言写字板.docx 一个简单的JAVA语言写字板一.需求分析1.需求分析:现在网络上各种文档编辑器数不胜数.功能也是应有尽有,有能改变字体的,有可以改变字体颜色的,但是,这些软件有 ...

  5. Go语言字符串拼接的三种方式

    Go语言字符串拼接的三种方式 使用bytes.Buffer实现字符串拼接 通过创建一个缓冲byte类型的缓冲器str1,然后通过WriteString方法将传入的字符串放入缓冲器的尾部,已达到拼接的作 ...

  6. java工具链 有什么_Iodine:一个优秀的Java语言工具链

    原标题:Iodine:一个优秀的Java语言工具链 原文:Iodine: a Better Java Language 作者:marc hoffman 翻译:雁惊寒 摘要:本文介绍了一款非常优秀的Ja ...

  7. Java中字符串拼接的几种方式(源码分析)

    字符串拼接是我们在Java代码中比较经常要做的事情,就是把多个字符串拼接到一起. 我们都知道,String是Java中一个不可变的类,所以他一旦被实例化就无法被修改. 不可变类的实例一旦创建,其成员变 ...

  8. R语言字符串拼接(paste()函数)

    R语言中常使用paste()函数进行字符串拼接,paste()函数可以将任意数量的参数组合在一起. 1. 语法 代码 参数 paste(-, sep = " ", collapse ...

  9. c语言 字符串拼接 添加回撤换行,C语言一行语句太长的换行处置方式

    目录 1.C语言中代码的多行誊写 对C语言初学者来说,编写的程序的功效很简单,一句代码很短,但是在现实开发中,参数往往很长许多,一句代码可能会很长,需要用多行才气誊写. 若是我们在一行代码的行尾放置一 ...

  10. java 数组字符串拼接字符串_java数组、字符串拼接

    1. 数组实现拼接 int[] arr ={11,22,33,44,55,66}; System.out.print("["); for (int i = 0; i if (i== ...

最新文章

  1. iOS 二进制流转化-项目笔记
  2. python 异常处理中try else语句的使用
  3. android tab 点击,TabLayout.Tab点击事件
  4. 【HDU - 1080】Human Gene Functions(dp,可编辑距离类问题)
  5. 上海 · 百度语义分割Pro沙龙,高性能深度学习实战营
  6. 【报告分享】2020年B站内容营销报告.pdf(附下载链接)
  7. [转]香农信息论与毒药称球问题
  8. [转载]提升进程权限-OpenProcessToken等函数的用法
  9. 装饰模式(Decorate Pattern)
  10. CentOS 搭建自主 KMS服务器 激活内网机器
  11. cad刷新快捷键_36个CAD快捷键命令,18个CAD制图技巧,学会轻松玩转CAD
  12. #.net在技术上远超Java,可是为什么大多数公司还是选择使用Java
  13. 星际蜗牛8盘位装机记录 蜗牛C双全 益衡7030电源
  14. 3种方法: 圆圈中最后剩下的数字
  15. Dynamics CRM: 表单(Form)中的显示字段变成只读的几种情况
  16. OddBall-图异常点检测
  17. 从运维角度测试全局死锁以及带来的问题
  18. Linux文件权限:特殊权限、权限属性、权限掩码
  19. 转:oracle ocp 指南
  20. 2022-8-3----Android10.0(MTK)-----SN_Writer 写入 SN 注意事项

热门文章

  1. java中一个数小于零_这段java程序怎样才能让“所输入的数小于0!”只输出一次,并且满足题目条件?...
  2. 只腐蚀毛刺 腐蚀算法_去毛刺工艺大全,一次性列举了14种方法,非常全面
  3. mysql分窗函数_频谱分析中如何选择合适的窗函数
  4. 开源前端 可视化大数据交互前端动态模板
  5. webstack响应式网站导航html源码kyuan 本地静态化版
  6. 15:46 2009-8-2 sql2005客户端装不上,碎片不能整理,createthread
  7. 12 个非常有用的 JavaScript 技巧
  8. UIPageControl 分页控件-IOS开发
  9. iPhone开发之Rotation
  10. 【服务器】挖矿病毒 kdevtmpfsi(一针见效)