มาว่ากันเรื่อง gsub
. ของ Ruby วิธีการและวิธีการใช้ ขั้นแรก คุณต้องมีสตริงเพื่อเล่นด้วยวิธีนี้
ทำไม?
เพราะจุดรวมของ gsub
คือการแทนที่ส่วนของสตริง
อันที่จริง :
“sub” ใน “gsub” ย่อมาจาก “substitute” และ “g” ย่อมาจาก “global”
นี่คือสตริงตัวอย่าง :
str = "white chocolate"
สมมติว่าเราต้องการแทนที่คำว่า "ขาว" ด้วยคำว่า "มืด"
ตามนี้ :
str.gsub("white", "dark")
นี่คือคำพูด :
รับสตริง str
, แทนที่คำแรกทั้งหมดที่เกิดขึ้น (white
) ด้วยคำที่สอง (dark
)
ซึ่งหมายความว่าเราจะได้กินช็อคโกแลตที่ดีขึ้นมาก
โอ้ เดี๋ยวก่อน มันเป็นแค่สตริง
เราไม่สามารถกินสิ่งนั้นได้! 🙂
ยังไงก็…
gsub
ของ Ruby method ทำได้มากกว่าแค่ การแทนที่ .
มาดูตัวอย่างกัน
แทนที่รูปแบบด้วยนิพจน์ทั่วไป
แทนที่คำเดียวก็ได้
แต่ถ้าคุณสามารถเปลี่ยนรูปแบบได้ล่ะ
ถูกใจ :
ปี ที่อยู่อีเมล หมายเลขโทรศัพท์ ฯลฯ
ทำได้!
นี่คือตัวอย่าง :
"a1".gsub(/\d/, "2") # "a2"
อาร์กิวเมนต์แรกคือนิพจน์ทั่วไป และมันมากเกินไปที่จะกล่าวถึงที่นี่
แต่เป็นภาษาที่ตรงกับรูปแบบ .
ในกรณีนี้ \d
ค้นหาตัวเลข เช่น ตัวเลข “1” ใน “a1”
คุณยังสามารถทำสิ่งนี้ได้ :
"a1".gsub(/(\w)(\d)/, '\2\1')
ซึ่งส่งผลใน :
"1a"
เราเปลี่ยนคำสั่ง!
ใช้งานได้โดยใช้ฟีเจอร์ที่เรียกว่า “จับภาพกลุ่ม”
เราสามารถใช้กลุ่มเป็น \1
สำหรับกลุ่มแรก \2
สำหรับกลุ่มที่สอง เป็นต้น
สร้างกลุ่มด้วยวงเล็บ
Gsub ขั้นสูงพร้อมบล็อก
สิ่งที่น่าสนใจจริงๆ เมื่อคุณเริ่มใช้ gsub กับบล็อก
ทำไม?
เพราะภายในบล็อก คุณสามารถใช้ตรรกะในการตัดสินใจว่าจะแทนที่บางสิ่งอย่างไร
แทนที่จะใช้ค่าคงที่
ตัวอย่างเช่น :
"dog".gsub(/\w+/) { |animal| animal == "dog" ? "cat" : "dog" }
เราพบสัตว์ที่มี \w+
ซึ่งหมายถึง “อักขระที่เป็นตัวอักษรและตัวเลขคละกันอย่างน้อยหนึ่งตัว”
แล้ว :
- ถ้าเป็น "สุนัข" เราจะแทนที่ด้วย "แมว"
- ถ้าคำนั้นคือ อย่างอื่น , เราแทนที่ด้วย “dog”
ตรรกะแบบนี้ใช้กับค่าคงที่ไม่ได้ พารามิเตอร์ตัวที่ 2 ของ gsub
แทนที่คำหลายคำด้วยแฮช
หากคุณมีรายการการแทนที่เพื่อให้คุณสามารถใช้แฮชได้
ถูกใจสิ่งนี้ :
colors = { "B" => "blue", "G" => "green", "R" => "red" }
การทำงานนี้เหมือนกับพจนานุกรมการแปล โดยที่คีย์จะถูกแทนที่ด้วยค่าของคีย์เหล่านั้น
นี่คือตัวอย่าง :
"BBBGR".gsub(/\w/, colors)
ซึ่งส่งผลใน :
"bluebluebluegreenred"
ตรวจสอบให้แน่ใจว่าอาร์กิวเมนต์ที่ 1 ของคุณจะตรงกับคีย์
ในกรณีนี้ \w
จับคู่อักขระแต่ละตัว ดังนั้นจะจับคู่กับ "B" แล้วแทนที่ด้วย "สีน้ำเงิน"
สรุป
คุณได้เรียนรู้เกี่ยวกับวิธีการ gsub ใน Ruby แล้ว! เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คุณสามารถแทนที่หรือแทนที่อักขระภายในสตริงได้
มีประโยชน์หลายอย่าง :
- การลบอักขระที่ไม่ถูกต้อง (โดยทำให้อาร์กิวเมนต์ที่ 2 เป็นสตริงว่าง)
- การแทนที่ตัวยึดตำแหน่งและตัวย่อด้วยค่าเต็ม
- การใช้รูปแบบและตรรกะในการเปลี่ยนสตริง
ตอนนี้ถึงตาคุณที่จะฝึกฝนด้วยวิธีนี้ เพื่อให้คุณสร้างองค์ความรู้ใหม่ได้
ขอบคุณที่อ่านนะคะ 🙂