2010-10-25 22 views
123

W języku Ruby istnieje sposób łączenia wszystkich elementów tablicy w jeden ciąg znaków?Ruby łączące tablicę w jeden ciąg

Przykład Array:

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

Przykład wyjściowa:

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

Dokumentacja to Twój przyjaciel! Pomoże ci to znacznie przestudiować metody Array, String, Hash, itp. –

Odpowiedz

236

Użyj metody Array#join (argument do join co wstawić między strunami - w tym przypadku przestrzeń):

@arr.join(" ") 
+1

co, jeśli łączysz cyfry? '[1,2,3] => 123'? –

+2

@ mr.musicman 'join' działa z wyliczeniami wszystkiego, co odpowiada na' to_s', włączając liczby całkowite, ale wynik zawsze będzie ciągiem znaków. Jeśli chcesz uzyskać wynik całkowity, możesz użyć 'to_i' na wyniku. – sepp2k

+0

Jeśli początkowo zerwałeś ciąg wielowierszowy za pomocą ['String # lines'] (http://ruby-doc.org/core-2.2.0/String.html#method-i-lines), możesz spokojnie związałem go ponownie za pomocą 'my_string.join ('')' (zwróć uwagę na pusty argument łańcuchowy). –

16

Chociaż nieco bardziej zagadkowe niż join, możesz także pomnożyć tablicę przez ciąg znaków.

@arr * " " 
+1

oprócz bycia tajemniczym, czy jest jakaś wada podczas używania tej sztuczki? – marcio

+4

@marcioAlmada Bez skazy, tylko minimalne obciążenie. W tablicy.c pierwszą rzeczą, którą robi Ruby, jest sprawdzenie typu łańcucha, a następnie wywołanie metody łączenia. Ponadto: podważaj skały show-source! Spróbuj sam: '$ Array.instance_methods. *' ($ Jest skrótem dla źródła-show) – okket