连接字符串值与分隔符处理 null 和空字符串?

Concatenate string values with delimiter handling null and empty strings?

在 Java 8 中,我有一些 String 值,我想以逗号分隔的有效值列表结束。如果 Stringnull 或空 我想忽略它。我知道这看起来很常见,而且很像 this old question;但是,该讨论并未解决空值和空格(我也不喜欢已接受的答案)。

我看过 Java 8 StringJoiner、Commons StringUtils (join) 和可信赖的 Guava (Joiner),但 none 似乎是一个完整的解决方案。愿景:

 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

有没有好的方法(不涉及 for 循环、将字符串加载到列表中、and/or 正则表达式替换以删除错误条目)?

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