10
votes

Groovy String Concaténation avec chèques nuls

Y a-t-il un meilleur moyen de le faire? Remarque: Part1 , Part2 et Part3 sont définis des variables de chaîne (elles peuvent être nuls). XXX

Le résultat souhaité est une chaîne concaténée avec des valeurs nulles laissées.


2 commentaires

Vous pouvez emballer tout dans une ligne: def ans = [Part1, Part2, Part3] .RemoveAll ([null]). Joindre () , mais je ne suis pas sûr que ce que tu veux dire par "mieux".


@cdeszaq qui pourrait être meilleur, mais cela ne fonctionne pas. La méthode RemoveAll () renvoie un booléen et rejoindre () ne peut pas être appelé sur un booléen.


4 Réponses :


12
votes

Vous pouvez faire ceci: xxx

vous pourrait être capable de réduire la fermeture jusqu'à juste {it} en fonction de la façon dont Vos articles de liste évalueront selon Vérité Groovy , mais cela devrait en rendre un peu plus serré.

Remarque: le gdk javadocs est un super ressource.


0 commentaires

8
votes

Si vous utilisez retranchée sans paramètres. Il retournera toutes les valeurs "véridiques". Cela devrait donc fonctionner:

def ans = [part1, part2, part3].findAll().join()


5 commentaires

C'est essentiellement la même chose que ma réponse avec l'ajout de confirmation de la manière dont retranchez fonctionne, non?


Il supprime également la fermeture transmise à retranchée et mention résultats résultats , ce qui pourrait être utile pour les autres cas.


Bon point. FindResults a la bonne capacité à transformer les choses en tant que filtres. +1


J'aime ça, mais ça échoue pour moi. J'utilise Groovy 1.7.10, et la méthode Findallyl () jette une erreur lorsque l'un des éléments de tableau est NULL.


@Ryan Yeah, le Docs dit que le Niladic Windows a été ajouté à Groovy 1.8.1



2
votes

Alternativement, vous pouvez le faire comme une opération de pliose avec injecter : xxx

ceci présente toute la liste et concaténe chaque élément successif à un résultat, avec une logique Pour utiliser la chaîne vide pour les éléments nuls.


1 commentaires

+1 Inject est un moyen beaucoup plus puissant que ma réponse. C'est pourrait être un peu plus complexe et plus difficile à comprendre.



1
votes

Vous pouvez utiliser grep : xxx


1 commentaires

Vous pouvez également utiliser simplement .grep () car il est par défaut à l'aide de la vérité Groovy en tant que filtre, mais c'est la même chose que d'utiliser Restacletall () .