Scala: เข้าร่วมสตริงที่ซ้ำได้


262

ฉันจะ "เข้าร่วม" สตริงที่ซ้ำได้ในสตริงสกาล่าได้อย่างไร

val thestrings = Array("a","b","c")
val joined = ???
println(joined)

ฉันต้องการรหัสนี้เพื่อส่งออกa,b,c(เข้าร่วมองค์ประกอบโดย ",")


1
@scala_newbie ฉันคิดว่าคำถามของคุณถูกลดระดับลง 'ทำให้บางคนคิดว่าขาดความพยายามในการวิจัย
อ้อมนามนาม

24
googling คำถามนี้คืองานวิจัยของฉัน
Walrus the Cat

คำตอบ:


424

แล้วmkStringล่ะ

theStrings.mkString(",")

มีชุดตัวเลือกซึ่งคุณสามารถระบุส่วนนำหน้าและส่วนต่อท้ายได้เช่นกัน

ดูที่นี่สำหรับการดำเนินการโดยใช้foldLeftซึ่งเป็น verbose มากขึ้น แต่อาจคุ้มค่าที่จะมองหาเพื่อการศึกษา


โปรดทราบว่าการใช้งาน foldLeft ถือว่าเป็นรายการที่ไม่ว่าง
Frawr

5
ขอบคุณ! ในกรณีที่ทุกคนต้องการใส่องค์ประกอบสตริงในเครื่องหมายคำพูด mkString ก็มีประโยชน์เช่นกัน: theStrings.mkString ("'", "'," "," "" ")
Niko Gamulin

1
@Frawr หน้านั้นเชื่อมโยงไปยังกลุ่มตัวอย่างoldfashionedsoftware.com/2009/07/30/..ซึ่งรวมถึงการใช้งานที่ใช้การจับคู่รูปแบบสำหรับกรณีรายการที่ว่างเปล่า (ไม่มี) การปรับเปลี่ยนเป็นการเลียนแบบ mkString จะเป็นเช่นนี้: def mkFoldLeftString[A](list:List[String], delim:String = ","): String = list match { case head :: tail => tail.foldLeft(head)(_ + delim + _) case Nil => "" }
Davos

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