【发布时间】:2016-04-18 23:15:27
【问题描述】:
在 Java 8 中,我有一些 String 值,我希望得到一个以逗号分隔的有效值列表。如果 String 是 null 或空,我想忽略它。我知道这似乎很常见,很像this old question;但是,该讨论并未涉及空值和空格(我也不喜欢接受的答案)。
我看过 Java 8 StringJoiner、Commons StringUtils (join) 和可靠的 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
是否有一种很好的方法来做到这一点(不涉及 for 循环、将字符串加载到列表中和/或正则表达式替换以删除错误条目)?
【问题讨论】:
-
简单的 java 8 方式是
Stream.of(val1, val2, val3, val4).filter(s -> s!=null && !s.isEmpty()).collect(joining(",")),静态导入为Collectors.joining。如果这不符合您的喜好,您将不得不制作自己的课程或在某个图书馆中找到一个。但是为什么要麻烦呢? -
按标题复制,但不是内涵。
-
Java 8 中的this 回答是否不完全符合您的要求?
-
用户需要忘记重复是不好的想法。如果存在解决方案,我们应该指出它,而不是把知识分散到各处。
标签: java java-8 guava apache-stringutils