Dans Java 8 J'ai un certain nombre de valeurs de chaîne et je veux finir avec une liste délimitée par des virgules de valeurs valides. Si une chaîne est nulle ou vide Je veux l'ignorer. Je sais que cela semble courant et ressemble beaucoup à cette vieille question ; cependant, cette discussion n'aborde pas les espaces Nuls ET (je ne fais pas non plus 'aime pas la réponse acceptée).
J'ai regardé Java 8 StringJoiner, commons StringUtils (join) et fidèle goyave (Joiner) mais aucun ne semble être une solution complète. La vision:
where: val1="a", val2=null, val3="", val4="b"
String niceString = StringJoiner.use(",").ignoreBlanks().ignoreNulls()
.add(val1).add(val2).add(val3).add(val4).toString();
résulterait en niceString = "a, b"
N'y a-t-il pas une bonne façon de le faire (cela n'implique pas pour les boucles, le chargement de chaînes dans une liste et/ou les remplacements d'expressions régulières pour supprimer les entrées incorrectes)?
String joined =
Stream.of(val1, val2, val3, val4)
.filter(s -> s != null && !s.isEmpty())
.collect(Collectors.joining(","));