การรวมหลายสตริงเข้าด้วยกันเป็นสิ่งที่คุณต้องทำบ่อยๆ ใน Ruby
แต่คุณจะทำอย่างนั้นได้อย่างไร
ก็…
มีสองวิธี :
- การต่อสตริงทับทิม
- การแก้ไขสตริงทับทิม
การต่อกันมีลักษณะเช่นนี้ :
a = "Nice to meet you" b = ", " c = "do you like blueberries?" a + b + c # "Nice to meet you, do you like blueberries?"
คุณสามารถใช้ + โอเปอเรเตอร์เพื่อต่อท้ายสตริงกับอีกอันหนึ่ง
ในกรณีนี้ a + b + c , สร้างสตริงใหม่
อีกอย่าง คุณไม่จำเป็นต้องใช้ตัวแปรในการทำงาน
ตัวอย่าง :
puts "I like" + " " + "chocolate" # I like chocolate
อีกทางเลือกหนึ่งคือการใช้ += โอเปอเรเตอร์
ตัวอย่าง :
a = "" a += "test" a += "test" a += "test" a # "testtesttest"
เราเริ่มต้นด้วยสตริงว่าง และเราสร้างสตริงที่ใหญ่ขึ้นโดยการต่อท้ายมัน
แต่มีปัญหาอย่างหนึ่งคือ…
มันช้ามาก!
แนวทางแก้ไขปัญหาต่อไป
ตัวอย่างวิธีการ Ruby Concat
คุณสามารถใช้ทับทิม concat วิธีการรวมสตริงอย่างมีประสิทธิภาพ
ตามนี้ :
str = ""
str.concat("a")
str.concat("a")
str
# "aa"
เร็วกว่าเพราะจะเปลี่ยนสตริง str , แทนที่จะสร้างใหม่
แต่มันไม่สวยเท่า += …
มีวิธีอื่นไหม
ใช่!
คุณสามารถใช้ << เมธอด ซึ่งเป็นนามแฝงสำหรับ concat .
หมายเหตุ :เริ่มต้นด้วย Ruby 2.4 จะมีความแตกต่างเล็กน้อยกับ
concatคุณสามารถส่งผ่านหลายอาร์กิวเมนต์ด้วย<<คุณสามารถผ่านได้ครั้งละหนึ่งเท่านั้น
ตัวอย่าง :
str = "" str << "a" str << "a"
คุณยังสามารถทำสิ่งนี้ได้ :
str = "" str << "a" << "a"
เหลือปัญหาเดียวเท่านั้น
หากคุณต้องการรวมสตริงกับตัวแปร แต่ตัวแปรตัวใดตัวหนึ่งไม่ใช่สตริง คุณจะได้ผลลัพธ์ที่ไม่คาดคิด
ลองดูสิ :
"" + 1 # TypeError: no implicit conversion of Fixnum into String "" << 1 # "\x01"
ทางออกคืออะไร?
ใช้เมธอด to_s เพื่อแปลงอ็อบเจ็กต์ใหม่ทั้งหมดให้เป็นสตริง
ถูกใจสิ่งนี้ :
"" + 1.to_s
แน่นอนว่าการดำเนินการนี้ค่อนข้างเร็ว เราจึงมีเครื่องมืออื่นที่คุณสามารถใช้ได้
วิธีการใช้ Ruby String Interpolation
การประมาณค่าหรือการรวมตัวแปรเข้ากับสตริงเป็นเทคนิคที่มีประสิทธิภาพ
ช่วยให้คุณสามารถ "สร้างเทมเพลต" สตริงได้
นี่คือตัวอย่าง :
age = 33
name = "Jesus"
"Hello, my name is #{name} & I'm #{age} years old."
เราสามารถเสียบ name . ใดๆ ก็ได้ &age โดยกำหนดให้เป็นตัวแปรก่อนสตริง
ส่วนที่ดีที่สุด?
Ruby ดูแลการแปลงค่าเหล่านี้เป็นสตริงให้คุณ
ดังนั้นคุณจึงไม่ต้องเรียก to_s !
ของดี
การเติมสตริง
มีอีกวิธีหนึ่งในการรวมสตริงเข้าด้วยกัน
แทนที่จะรวมตัวแปรและสตริงที่เล็กกว่าเป็นสิ่งใหม่ด้วย "การแก้ไขสตริง"
หรือต่อท้ายด้วย << &concat .
คุณยังสามารถprepend !
ตัวอย่าง :
str = ""
str.prepend("1")
str.prepend("2")
str.prepend("3")
# "321"
หากคุณกำลังคิดว่ามี append วิธีการก็ไม่มี
สำหรับอาร์เรย์เท่านั้น
สรุป
คุณได้เรียนรู้เกี่ยวกับการต่อสตริง การต่อท้าย การเติมและการประมาณค่าใน Ruby ซึ่งจะทำให้คุณสามารถรวมหลายสตริงเข้าด้วยกันได้
โปรดแบ่งปันบทความนี้หากคุณพบว่ามีประโยชน์ 🙂
ขอบคุณสำหรับการอ่าน