c语言字符串连接myjoin,[每天一个知识点]14-Java语言-字符串拼接

首发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 list = Arrays.asList(array);

return new Object[][] { new Object[] { array, list } };

}

@Test(dataProvider = "list")

public void testJava8Join(String[] array, List 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 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 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));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值