0Pricing
Ruby Academy · บทเรียน

การค้นหาและการแทนที่

gsub, sub, match

การค้นหาและการแทนที่ เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

การค้นหาสตริงย่อย

เมธอด index คืนค่าตำแหน่งของการจับคู่ครั้งแรก หรือคืนค่า nil หากไม่พบ ส่วน include? จะคืนค่าจริงหรือเท็จ

text = "hello world"
puts text.index("world")
puts text.include?("world")

การแทนที่การจับคู่ครั้งแรกด้วย sub

sub จะแทนที่การปรากฏของรูปแบบเพียง ครั้งแรกด้วยค่าใหม่

text = "cat cat cat"
puts text.sub("cat", "dog")

การแทนที่การจับคู่ทั้งหมดด้วย gsub

gsub หมายถึงการแทนที่ทั้งหมด โดยจะแทนที่การปรากฏ ทุกครั้ง

text = "cat cat cat"
puts text.gsub("cat", "dog")

การใช้นิพจน์ทั่วไป

รูปแบบระหว่างเครื่องหมายทับ เช่น /.../ คือนิพจน์ทั่วไป /\d/ ใช้จับคู่ตัวเลขหนึ่งหลัก โดย gsub และ sub รองรับรูปแบบนิพจน์ทั่วไป

text = "a1b2c3"
puts text.gsub(/\d/, "*")

การจับคู่ด้วย match?

match? จะคืนค่าเป็นจริงหากนิพจน์ทั่วไปจับคู่กับส่วนใดก็ได้ในสตริง วิธีนี้รวดเร็วและอ่านง่ายสำหรับการตรวจสอบ

email = "ada@ruby.org"
puts email.match?(/@/)
puts "no at sign".match?(/@/)

การจับข้อมูลด้วย match

match จะคืนออบเจ็กต์ MatchData ดัชนี [0] คือการจับคู่ทั้งหมด ส่วนวงเล็บจะสร้างกลุ่มการจับข้อมูล ซึ่งเข้าถึงได้ด้วย [1], [2] และต่อไปเรื่อย ๆ

data = "2024-05-30"
m = data.match(/(\d+)-(\d+)-(\d+)/)
puts m[1]
puts m[2]

การใช้ scan เพื่อค้นหาการจับคู่ทั้งหมด

scan จะคืนอาร์เรย์ที่มีการจับคู่ทุกครั้งในสตริง เหมาะอย่างยิ่งสำหรับดึงตัวเลขหรือคำทั้งหมดออกมา

text = "phone 555 and 777"
puts text.scan(/\d+/).inspect

จุดยึด

จุดยึดจะกำหนดให้การจับคู่ต้องอยู่ที่ตำแหน่งใดตำแหน่งหนึ่ง ^ หมายถึงต้นบรรทัด และ $ หมายถึงท้ายบรรทัด ส่วน \A และ \z จะกำหนดให้ตรงกับขอบเขตของสตริงทั้งหมด

puts "hello".match?(/^hel/)
puts "hello".match?(/llo$/)
puts "hello".match?(/^world/)

คลาสอักขระ

วงเล็บเหลี่ยมใช้กำหนดชุดอักขระที่อนุญาต [aeiou] จับคู่สระตัวใดก็ได้ ส่วน [a-z] จับคู่ตัวอักษรพิมพ์เล็กตัวใดก็ได้

text = "Ruby"
puts text.gsub(/[aeiou]/i, "_")

บล็อกใน gsub

ส่งบล็อกให้ gsub เพื่อแปลงการจับคู่แต่ละครั้งแบบไดนามิก ข้อความที่จับคู่ได้จะเป็นอาร์กิวเมนต์ของบล็อก

text = "one two"
result = text.gsub(/\w+/) { |w| w.upcase }
puts result

การค้นหาโดยไม่คำนึงถึงตัวพิมพ์

แฟล็ก i หลังนิพจน์ทั่วไปจะทำให้ไม่สนใจความแตกต่างระหว่างตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

text = "Hello HELLO hello"
puts text.gsub(/hello/i, "hi")

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ตรวจสอบทักษะการค้นหาและแทนที่ของคุณ

ทบทวน

ตอนนี้คุณสามารถค้นหาและแทนที่ข้อความได้แล้ว:

  • index, include?, match? สำหรับค้นหา
  • sub (ครั้งแรก) และ gsub (ทั้งหมด) สำหรับแทนที่
  • รูปแบบนิพจน์ทั่วไป จุดยึด และคลาสอักขระ
  • scan สำหรับดึงการจับคู่ทั้งหมด และบล็อกสำหรับการแทนที่แบบไดนามิก

ถัดไป: การแยกและการเชื่อมสตริง

puts "a,b,c".gsub(",", " | ")

คำถามที่พบบ่อย

บทเรียน “การค้นหาและการแทนที่” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การค้นหาและการแทนที่” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การค้นหาและการแทนที่”

gsub, sub, match คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การค้นหาและการแทนที่” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม

ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐานสตริงและเมธอด
  2. การแทรกค่าและการจัดรูปแบบ
  3. การค้นหาและการแทนที่
  4. การแยกและการเชื่อม
← กลับไปที่ Ruby Academy