การรวมหลายสตริงเข้าด้วยกันเป็นสิ่งที่คุณต้องทำบ่อยๆ ใน 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 ซึ่งจะทำให้คุณสามารถรวมหลายสตริงเข้าด้วยกันได้
โปรดแบ่งปันบทความนี้หากคุณพบว่ามีประโยชน์ 🙂
ขอบคุณสำหรับการอ่าน