2010-10-25 6 views
123

In Ruby gibt es eine Möglichkeit, alle Array-Elemente in einer Zeichenfolge zu kombinieren?Ruby kombiniert ein Array zu einer Zeichenfolge

Beispiel Array:

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

Ausgabe:

<p>Hello World</p><p>This is a test</p> 
+6

Die Dokumentation ist dein Freund! Es wird Ihnen erheblich helfen, die Methoden von Array, String, Hash usw. zu studieren. –

Antwort

236

Mit der Array#join Methode (das Argument für join ist, was zwischen den Saiten zum Einfügen - in diesem Fall einen Raum):

@arr.join(" ") 
+1

Was wäre, wenn Sie sich den Ziffern anschließen würden? '[1,2,3] => 123'? –

+2

@ mr.musicman 'Join' arbeitet mit Aufzählungen von allem, was auf' to_s' reagiert, einschließlich Ganzzahlen, aber das Ergebnis wird immer eine Zeichenkette sein. Wenn Sie ein ganzzahliges Ergebnis wünschen, können Sie 'to_i' für das Ergebnis verwenden. – sepp2k

+0

Wenn Sie anfangs eine mehrzeilige Zeichenkette mit ['String # lines'] (http://ruby-doc.org/core-2.0/String.html#method-i-lines) auflösten, können Sie dies problemlos tun band es mit 'my_string.join ('')' wieder zusammen (notieren Sie sich das leere String-Argument). –

16

Während ein bisschen kryptischer als join können Sie das Array auch mit einem String multiplizieren.

@arr * " " 
+1

Abgesehen davon, dass es kryptisch ist, gibt es einen möglichen Fehler bei der Verwendung dieses Tricks? – marcio

+4

@marcioAlmada Kein Makel, nur minimale Overhead. In array.c sucht Ruby zuerst nach einem String-Typ und ruft dann die Join-Methode auf. Außerdem: hebeln mit Show-Source-Steinen! Probieren Sie es selbst aus: '$ Array.instance_methods. *' ($ Ist Abkürzung für show-source) – okket

Verwandte Themen