Zig Academy · บทเรียน

การเปรียบเทียบและค้นหาไบต์

ใช้ตัวช่วยของ std.mem กับสตริง

บทเรียน 3 จาก 413 ขั้นตอน

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

ใช้ == ไม่ได้

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

std.mem ช่วยได้

โมดูลไลบรารีมาตรฐาน std.mem ทำงานกับ slice ที่มีชนิดสมาชิกใดก็ได้ รวมถึงสตริงชนิด []const u8 ของคุณด้วย

const std = @import("std");
const mem = std.mem;

eql เปรียบเทียบเนื้อหา

ใช้ mem.eql เพื่อทดสอบว่า slice สองตัวเก็บไบต์ชุดเดียวกันในลำดับเดียวกันหรือไม่ ฟังก์ชันนี้คืนค่า bool ธรรมดาที่คุณนำไปใช้ในเงื่อนไขได้

mem.eql(u8, "zig", "zig"); // true

ส่งชนิดสมาชิก

ตัวช่วย std.mem หลายตัวรับชนิดสมาชิกเป็นอาร์กิวเมนต์ตัวแรก สำหรับสตริง อาร์กิวเมนต์นั้นจะเป็น u8 เสมอ ซึ่งตรงกับ []const u8

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

ค้นหาข้อความภายในข้อความด้วย indexOf ฟังก์ชันนี้คืนค่าดัชนีแบบเลือกได้ ซึ่งเป็นตำแหน่งของรายการที่ตรงกันตัวแรก หรือคืนค่า null หากไม่พบ

mem.indexOf(u8, "hello", "ll"); // 2

จัดการค่า null

เนื่องจาก indexOf คืนค่าแบบเลือกได้ ให้แกะค่าออกด้วย if หรือ orelse ผลลัพธ์ที่เป็น null หมายความง่าย ๆ ว่าไม่พบข้อความที่ค้นหา

if (mem.indexOf(u8, h, n)) |i| {
    // found at i
}

ค้นหาจากท้ายสุด

ต้องการรายการที่ปรากฏครั้งสุดท้ายแทนครั้งแรกใช่ไหม ให้ใช้ lastIndexOf ซึ่งจะค้นย้อนกลับและคืนค่าดัชนีแบบเลือกได้เช่นกัน

คำนำหน้าและคำต่อท้าย

ตรวจสอบว่าสตริงเริ่มต้นหรือลงท้ายด้วยข้อความที่กำหนดหรือไม่ด้วย startsWith และ endsWith ทั้งสองรับค่า u8 และคืนค่า bool ที่ใช้งานง่าย เหมาะสำหรับการแยกวิเคราะห์

mem.startsWith(u8, "main.zig", "main");

ค้นหาไบต์เดี่ยว

หากต้องการระบุตำแหน่งของไบต์หนึ่งตัวแทนที่จะเป็นสตริงย่อย ให้ใช้ indexOfScalar นี่เป็นเส้นทางที่รวดเร็วเมื่อคุณต้องการอักขระเพียงตัวเดียว

mem.indexOfScalar(u8, "a,b", ',');

นับจำนวนครั้งที่ปรากฏ

ใช้ mem.count เพื่อนับว่าข้อความที่ค้นหาปรากฏในข้อความกี่ครั้ง ฟังก์ชันนี้คืนค่า usize และไม่คืนค่า null แม้จำนวนจะเป็นศูนย์

mem.count(u8, "aaa", "a"); // 3

การพิจารณาตัวพิมพ์

ตัวช่วยเหล่านี้แยกตัวพิมพ์เล็กใหญ่: A และ a เป็นไบต์คนละค่า หากต้องการจับคู่โดยไม่แยกตัวพิมพ์ ให้ปรับรูปแบบตัวพิมพ์ก่อน

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

คุณต้องการทราบว่าสตริงสองตัวมีข้อความเหมือนกันทุกประการหรือไม่

สรุปทบทวน

คุณเปรียบเทียบข้อความด้วย mem.eql และค้นหาด้วย indexOf, startsWith, indexOfScalar และ count ซึ่งทั้งหมดรองรับการจัดการค่า null และตัวพิมพ์ 🔍

เริ่มต้นได้ฟรี

เรียนรู้ Zig ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

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

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

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

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

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

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

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

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

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

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

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

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

  1. สตริงคือ []const u8
  2. ค่าตัวอักษรสตริงและอักขระหลีก
  3. การเปรียบเทียบและค้นหาไบต์
  4. จัดรูปแบบข้อความด้วย std.fmt
← กลับไปที่ Zig Academy