Je traite avec un tas de tableaux de chaînes et plusieurs fois j'ai écrit Maintenant, je sais que je peux ajouter cette méthode à la classe Array moi-même mais j'espère qu'il y a une manière intégrée pour le faire sans méthodes non standard ajoutées aux classes de base. Autant amusement que l'ajout de méthodes aux classes de base est, ce n'est pas quelque chose que je veux faire pour des raisons de maintenabilité. P>
Y a-t-il une méthode intégrée pour gérer cela? P> .Delete_if {| str | str.empty? } code> p>
8 Réponses :
Il existe une forme courte
array.delete_if(&:empty?)
Si vous utilisez des rails, Array.Delete_if (&: videa) est une meilleure option pour éviter une nométhodeurror si l'une des valeurs est nulle.
Array.compact.Delete_if (&: vide?) Code> gérera la nul et le vide dans Pure Ruby.
Vous pouvez utiliser .Sélectionnez! Mais vous allez toujours courir dans le même problème. P>
au lieu de modifier la matrice, vous pouvez créer une classe d'utilité à la place. P>
Eh bien, il y a ar = ['a', '', 2, 3, '']
p ar.delete('') #=> ""
p ar #=> ["a", 2, 3]
J'aime celui la. Il y a quelques semaines, il s'agissait donc de discussions sur la méthode qui supprime un élément et se retourne. comme array.delete (élément); Array code>
Vous pouvez faire ce J'espère que cela fonctionnera pour vous p> p>
Vous pouvez utiliser cette méthode: Veuillez noter que vous pouvez utiliser la méthode compact code> si vous ne devez éteindre qu'un tableau de NITLS. p> p>
Vous pouvez essayer en dessous de la solution. J'espère que cela vous aidera. P>
Array = ["", "", nil, nil, 2,3] array.delete_if (&: vide?) => [2,3] p>
Si vous souhaitez également supprimer NIL:
arr = ['',"",nil,323]
arr.map!{|x|x==''?nil:x}.compact!
=> [323]
Contrairement aux autres méthodes, cette ligne évalue comme la matrice renvoyée plutôt que ce qui a été supprimé
pour Simple fort> Travailler autour de: ICI: P> Nous sélectionnons uniquement l'élément de tableau que Ruby pense que c'est présent
nil code> et "" code> n'est pas présent? en rubis p> p>
.present? code> est une méthode des rails.
@Johncoote, oui, pour plus de détails: API.RubyonRails.org /classes/Object.html#method-espresent-3f
Une autre solution: ['A', '', 2, 3, ''] - ['']
J'ai le même problème que vous. Presque toujours, je veux faire cela juste avant
rejoindre code>, donc dans mon cas, j'ai fait une méthode similaire àjoindre code> mais supprime les blancs précédemment.Donc quelle est la question?
@ FL00R, que ce soit ou non, il est intégré de le faire.
@sawa, il y a
méthode compact code> suppression de tous les éléments NIL, mais il n'y a pas de méthode standard pour supprimer toutes les chaînes vides.@ FL00R DROITE. Ce sera la réponse courte à la question.
compact code> ne supprime pas d'éléments, il renvoie un nouveau tableau ne contenant pas les éléments. Les méthodes non destructives sont généralement plus faciles à utiliser car elles ne dépendent pas d'effets secondaires.@Rein Henrichs, Okey Il y a
compact! Code> Méthode :)Qu'est-ce qui ne va pas avec juste ajouter une nouvelle méthode à la classe Array?
Rien de mal s'il est bien documenté avant utilisation et s'il est clair pour tous les travailleurs d'équipe :)
Quelques grandes chances, mais malheureusement, la réponse réelle est no. B>
Dupliqué possible de Comment supprimer des éléments vides d'un tableau? < / a>