Ruby รวมอาร์เรย์เป็นหนึ่งสตริง


163

ใน Ruby มีวิธีการรวมองค์ประกอบอาร์เรย์ทั้งหมดเป็นหนึ่งสาย?

ตัวอย่างอาร์เรย์:

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

ตัวอย่างผลลัพธ์:

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

6
เอกสารเป็นเพื่อนของคุณ! มันจะช่วยให้คุณศึกษาวิธีการของอาเรย์สตริงแฮชและอื่น ๆ อีกมากมาย
Mark Thomas

คำตอบ:


303

ใช้Array#joinเมธอด (อาร์กิวเมนต์joinคือสิ่งที่จะแทรกระหว่างสตริง - ในกรณีนี้คือช่องว่าง):

@arr.join(" ")

1
เกิดอะไรขึ้นถ้าคุณกำลังเข้าร่วมตัวเลข? [1,2,3] => 123?
stevenspiel

3
@ mr.musicman joinทำงานร่วมกับสิ่งใด ๆ ที่ตอบสนองto_sรวมถึงจำนวนเต็ม แต่ผลลัพธ์จะเป็นสตริงเสมอ หากคุณต้องการผลลัพธ์จำนวนเต็มคุณสามารถใช้to_iกับผลลัพธ์
sepp2k

1
หากตอนแรกคุณเลิกใช้สตริงหลายบรรทัดString#linesคุณสามารถผูกมันกลับมารวมกันโดยใช้my_string.join('')(จดบันทึกอาร์กิวเมนต์สตริงว่าง)
Frank Koehl

หากต้องการเพิ่มสิ่งที่ @ sepp2k กล่าวว่า: joinลองหนึ่ง#to_strและ#to_sสอง
Greg Navis

19

ในขณะที่เป็นความลับมากกว่าเล็กน้อยjoinคุณยังสามารถคูณอาร์เรย์ด้วยสตริง

@arr * " "

1
นอกจากความลึกลับแล้วยังมีข้อบกพร่องใด ๆ ที่เป็นไปได้เมื่อใช้เคล็ดลับนี้หรือไม่?
marcio

4
@marcioAlmada ไม่มีข้อบกพร่องเพียงแค่ค่าใช้จ่ายน้อยที่สุด ใน array.c สิ่งแรกที่ Ruby ทำคือตรวจสอบชนิดสตริงจากนั้นเรียกใช้วิธีการเข้าร่วม นอกจากนี้: แงะกับหินแหล่งที่มาแสดง! ลองด้วยตัวคุณเอง: $ Array.instance_methods.*($ เป็นชวเลขสำหรับแหล่งโชว์)
okket

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.