Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

การต่อสตริงและการแก้ไขใน Ruby (พร้อมตัวอย่าง)

การรวมหลายสตริงเข้าด้วยกันเป็นสิ่งที่คุณต้องทำบ่อยๆ ใน Ruby

แต่คุณจะทำอย่างนั้นได้อย่างไร

ก็…

มีสองวิธี :

  1. การต่อสตริงทับทิม
  2. การแก้ไขสตริงทับทิม

การต่อกันมีลักษณะเช่นนี้ :

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 ซึ่งจะทำให้คุณสามารถรวมหลายสตริงเข้าด้วยกันได้

โปรดแบ่งปันบทความนี้หากคุณพบว่ามีประโยชน์ 🙂

ขอบคุณสำหรับการอ่าน