Ruby gibt den Inhalt eines Arrays als durch Kommas getrennte Zeichenfolge Ruby aus


79

Gibt es eine korrektere Möglichkeit, den Inhalt eines Arrays als durch Kommas getrennte Zeichenfolge auszugeben?

@emails = ["joe@example.com", "Peter@example.com", "alice@example.com"]

@emails * ","

=> "joe@example.com", "Peter@example.com", "alice@example.com"

Das funktioniert, aber ich bin mir sicher, dass es eine elegantere Lösung geben muss.


9
Eigentlich wird das Ergebnis sein"joe@example.com,Peter@example.com,alice@example.com"
Andre Figueiredo

3
Ich bin verwirrt: Worum geht es bei Uneleganten array_name * ","?
M. Justin

Antworten:


187

Haben Sie das versucht:

@emails.join(",")

22
joinist ein Alias ​​für *, also wiederholt dies nur die Frage des OP.
Jörg W Mittag

1
Ist joinaber sicher leichter zu verstehen.
Henrik

12

Obwohl das OP und viele Antworten implizieren, dass das Array immer Inhalt enthält, muss ich manchmal einer Liste beitreten, die "leere" Elemente enthalten kann (normalerweise zum Verketten von Daten für eine Benutzeroberfläche).

Hier ist ein kleiner "Fortschritt", wie unterschiedliche Ansätze mit solch einem "unvollkommenen" Array von Zeichenfolgen umgehen:

['a','b','',nil].join(',') # => "a,b,," 
['a','b','',nil].compact.join(',') # => "a,b,"
['a','b','',nil].compact.reject(&:empty?).join(',') # => "a,b"
['a','b','',nil].reject(&:blank?).join(',') # Rails only

Der letzte ist mein Lieblingsansatz (Rails).


2

Ich musste nur etwas Ähnliches in einer ERB-Vorlage mit tun AllowedUsers <%= _allowed_users.join(" ") %>. Es ist vielleicht nicht so elegant, wie Sie es gesucht haben, aber es ist dieselbe Implementierung, die ich in mehreren Sprachen gesehen habe. Das könnte also ein Gewinn für die Lesbarkeit sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.