连接字符串值和分隔符在java 8中处理null和空字符串?

时间:2016-04-18 23:15:27

标签: java java-8 guava apache-stringutils

在Java 8中,我有一些String值,我希望以逗号分隔的有效值列表结束。如果String null或为空,我想忽略它。我知道这似乎很常见,很像this old question;但是,该讨论并未涉及空值和空格(我也不喜欢接受的答案)。

我看过Java 8 StringJoiner,commons StringUtils(join)和trusty guava(Joiner),但似乎没有一个完整的解决方案。愿景:

 where: val1="a", val2=null, val3="", val4="b"

  String niceString = StringJoiner.use(",").ignoreBlanks().ignoreNulls()
    .add(val1).add(val2).add(val3).add(val4).toString();

会导致niceString =" a,b"

有没有一个很好的方法来做到这一点(不涉及循环,将字符串加载到列表中,和/或正则表达式替换以删除错误的条目)?

1 个答案:

答案 0 :(得分:58)

String joined = 
    Stream.of(val1, val2, val3, val4)
          .filter(s -> s != null && !s.isEmpty())
          .collect(Collectors.joining(","));