البحث والاستبدال
gsub وsub وmatch
البحث والاستبدال درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.
العثور على سلسلة فرعية
تعيد الطريقة index موضع أول تطابق، أو nil إذا لم يُعثر عليه. وتعيد include? القيمة true أو false.
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? القيمة true إذا طابق تعبير نمطي أي موضع في السلسلة النصية. وهي طريقة سريعة وواضحة لإجراء عمليات التحقق.
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(",", " | ")الأسئلة الشائعة
هل درس «البحث والاستبدال» مجاني؟
نعم — نص درس «البحث والاستبدال» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ماذا ستتعلم في «البحث والاستبدال»؟
gsub وsub وmatch تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟
لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «البحث والاستبدال»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟
نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات String ودوالها
- الإقحام والتنسيق
- البحث والاستبدال
- التقسيم والضم