Ruby kombiniert ein Array zu einer Zeichenfolge

163

Gibt es in Ruby eine Möglichkeit, alle Array-Elemente zu einer Zeichenfolge zu kombinieren?

Beispielarray:

@arr = ['<p>Hello World</p>', '<p>This is a test</p>']

Beispielausgabe:

<p>Hello World</p><p>This is a test</p>
dennismonsewicz
quelle
6
Die Dokumentation ist dein Freund! Es wird Ihnen erheblich helfen, die Methoden von Array, String, Hash usw. zu studieren
Mark Thomas

Antworten:

303

Verwenden Sie die Array#joinMethode (das Argument für joinist, was zwischen den Zeichenfolgen eingefügt werden soll - in diesem Fall ein Leerzeichen):

@arr.join(" ")
sepp2k
quelle
1
Was wäre, wenn Sie sich Ziffern anschließen würden? [1,2,3] => 123?
Stevenspiel
3
@ mr.musicman joinarbeitet mit Aufzählungen von allem, was darauf reagiert to_s, einschließlich Ganzzahlen, aber das Ergebnis ist immer eine Zeichenfolge. Wenn Sie ein ganzzahliges Ergebnis wünschen, können Sie es to_ifür das Ergebnis verwenden.
sepp2k
1
Wenn Sie eine mehrzeilige Zeichenfolge ursprünglich mit aufgelöst haben String#lines, können Sie sie mit my_string.join('')(beachten Sie das leere Zeichenfolgenargument) wieder zusammenbinden.
Frank Koehl
Um zu dem hinzuzufügen, was @ sepp2k gesagt hat: joinversucht es #to_strzuerst und #to_szweitens.
Greg Navis
19

Obwohl etwas kryptischer als join, können Sie das Array auch mit einer Zeichenfolge multiplizieren.

@arr * " "
David Harkness
quelle
1
Gibt es neben der Kryptizität einen möglichen Fehler bei der Verwendung dieses Tricks?
Marcio
4
@marcioAlmada Kein Fehler, nur minimaler Aufwand. In array.c sucht Ruby zunächst nach einem Zeichenfolgentyp und ruft dann die Join-Methode auf. Außerdem: mit Show-Source-Steinen hebeln! Versuchen Sie es selbst: $ Array.instance_methods.*($ ist eine Abkürzung für Show-Quelle)
okket
1

Hier ist meine Lösung:

@arr = ['<p>Hello World</p>', '<p>This is a test</p>']
@arr.reduce(:+)
=> <p>Hello World</p><p>This is a test</p>
von spotz
quelle