web-dev-qa-db-ja.com

Java 8?でnullおよび空の文字列を処理する区切り文字で文字列値を連結します。

In Java 8いくつかの文字列値があり、有効な値のコンマ区切りリストになります。文字列がnullまたは空の場合無視したい。これはよくあるようで、 この古い質問 によく似ていることは知っているが、その議論はヌルとスペースを扱っていない受け入れられた答えが好きではありません)。

私は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"になります

これを行うための素敵な方法はありませんか?(ループ、リストへの文字列のロード、および/または不正なエントリを削除するための正規表現の置換を必要としません)?

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