连接字符串值与分隔符处理 null 和空字符串?
Concatenate string values with delimiter handling null and empty strings?
在 Java 8 中,我有一些 String
值,我想以逗号分隔的有效值列表结束。如果 String
是 null 或空 我想忽略它。我知道这看起来很常见,而且很像 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(","));
在 Java 8 中,我有一些 String
值,我想以逗号分隔的有效值列表结束。如果 String
是 null 或空 我想忽略它。我知道这看起来很常见,而且很像 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(","));