2016-04-18 6 views
7

In Java 8 habe ich eine Reihe von String-Werten und ich möchte mit einer durch Kommas begrenzten Liste gültiger Werte enden. Wenn ein String null oder leer ist, möchte ich es ignorieren. Ich weiß, das scheint häufig und ist sehr ähnlich wie this old question; Diese Diskussion befasst sich jedoch nicht mit NULLEN UND Leerzeichen (die akzeptierte Antwort gefällt mir auch nicht).Verketten Zeichenfolge Werte mit Begrenzer Umgang mit Null und leere Zeichenfolgen in Java 8?

Ich habe Java 8 StringJoiner, Commons StringUtils (Join) und trusty Guava (Joiner) betrachtet, aber keine scheint wie eine vollständige Lösung. Die Vision:

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

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

würde in niceString = "a, b"

Gibt es nicht eine schöne Art und Weise, dies zu tun (das beinhaltet nicht für Schleifen, Lade Strings in eine Liste, und/oder Regex ersetzt, um schlechte Einträge zu entfernen)?

+2

http://stackoverflow.com/questions/31380784/java-8-stream-string-null-or-empty-filter – Savior

+4

Die einfache Java 8 Weg ist 'Stream.of (val1, val2, val3 , val4) .filter (s -> s! = null &&! s.isEmpty()). collect (Zusammenfügen (",")) 'mit einem statischen Import von' Collectors.joining'. Wenn dir das nicht gefällt, musst du deinen eigenen Kurs machen oder einen in einer Bibliothek finden. Aber warum stören? – Misha

+1

dup durch Titel vielleicht, aber nicht intension. – eze

Antwort

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

Es gibt einige verwandte und doppelte Fragen. Bitte stimmen Sie ab, um als solche zu schließen und geben Sie Ihre Antworten dort, wenn sie sich bewerben. – Savior

+6

@Pillar Fragen beantwortet von Brian Goetz (einer der wichtigsten Java-Architekten) automatisch zu Fragen, die andere als dupliziertes Ziel verwenden sollten (er ist unser Jon Skeet von Java 8). – Pshemo

Verwandte Themen