مقارنة البايتات والبحث فيها
استخدموا مساعدات std.mem مع السلاسل النصية
مقارنة البايتات والبحث فيها درس مجاني في Zig Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Zig Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Zig Academy 4 دروس في المجموع.
لا يمكنك استخدام ==
الشريحتان نافذتان مختلفتان، ولذلك يقارن == المؤشرات والأطوال، لا المحتويات. وتتطلب مقارنة النصوص فحصًا حقيقيًا بايتًا ببايت.
std.mem للإنقاذ
تعمل وحدة المكتبة القياسية std.mem على شرائح من أي نوع عنصر، ويشمل ذلك سلاسل []const u8 النصية.
const std = @import("std");
const mem = std.mem;eql تقارن المحتويات
استخدم mem.eql لاختبار ما إذا كانت شريحتان تحتويان على البايتات نفسها بالترتيب نفسه. وتعيد قيمة 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 مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «مقارنة البايتات والبحث فيها» مجاني؟
نعم — نص درس «مقارنة البايتات والبحث فيها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Zig Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Zig Academy 4 دروس في المجموع.
ماذا ستتعلم في «مقارنة البايتات والبحث فيها»؟
استخدموا مساعدات std.mem مع السلاسل النصية تتمرن على Zig Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Zig Academy؟
لا تُشترط خبرة سابقة. Zig Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «مقارنة البايتات والبحث فيها»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Zig Academy هذا؟
نعم. كل درس في Zig Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- السلاسل النصية هي []const u8
- ثوابت السلاسل النصية ومحارف الهروب
- مقارنة البايتات والبحث فيها
- تنسيق النص باستخدام std.fmt