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.
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>HelloWorld</p><p>This is a test</p>
Antworten:
Verwenden Sie die
Array#join
Methode (das Argument fürjoin
ist, was zwischen den Zeichenfolgen eingefügt werden soll - in diesem Fall ein Leerzeichen):quelle
[1,2,3] => 123
?join
arbeitet mit Aufzählungen von allem, was darauf reagiertto_s
, einschließlich Ganzzahlen, aber das Ergebnis ist immer eine Zeichenfolge. Wenn Sie ein ganzzahliges Ergebnis wünschen, können Sie esto_i
für das Ergebnis verwenden.String#lines
, können Sie sie mitmy_string.join('')
(beachten Sie das leere Zeichenfolgenargument) wieder zusammenbinden.join
versucht es#to_str
zuerst und#to_s
zweitens.Obwohl etwas kryptischer als
join
, können Sie das Array auch mit einer Zeichenfolge multiplizieren.quelle
$ Array.instance_methods.*
($ ist eine Abkürzung für Show-Quelle)Hier ist meine Lösung:
quelle