0Pricing
Ruby Academy · درس

الاستبدال

gsub مع الأنماط

الاستبدال درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.

استبدال النص باستخدام sub

يستبدل String#sub أول تطابق لنمط ما بسلسلة نصية بديلة. ولا تتغير السلسلة الأصلية؛ إذ تُعاد سلسلة جديدة.

s = 'hello world'
puts(s.sub(/world/, 'Ruby'))
puts s

استبدال جميع التطابقات باستخدام gsub

تعني gsub الاستبدال الشامل. فهي تستبدل كل التطابقات، وليس التطابق الأول فقط.

puts('a-b-c-d'.gsub(/-/, '_'))
puts('one two two'.gsub(/two/, 'three'))

الأنماط في الاستبدال

يمكن أن تكون الوسيطة الأولى في gsub تعبيرًا نمطيًا كاملًا، مما يتيح لك مطابقة أنماط مرنة بدلًا من نص ثابت.

puts('id42 id7 id100'.gsub(/\d+/, '#'))
puts('a1b2c3'.gsub(/[0-9]/, '*'))

الإشارات الخلفية في الاستبدال

يمكنك في السلسلة النصية البديلة الإشارة إلى مجموعات الالتقاط باستخدام \1 و\2 وما إلى ذلك.

puts('2026-05-30'.gsub(/(\d{4})-(\d{2})-(\d{2})/, '\3/\2/\1'))

الإشارة الخلفية إلى التطابق الكامل

تشير \0 أو \& إلى النص المطابق بأكمله، وهو أمر مفيد لإحاطة التطابقات.

puts('cat dog'.gsub(/\w+/, '[\0]'))

صيغة الكتلة في gsub

يقبل gsub كتلة. ويمرر كل تطابق إلى الكتلة، ثم تصبح القيمة التي تعيدها الكتلة هي النص البديل. ويتيح لك ذلك حساب النصوص البديلة ديناميكيًا.

result = 'a1 b2 c3'.gsub(/\d/) { |d| (d.to_i * 10).to_s }
puts result

تحويل التطابقات إلى أحرف كبيرة

تجعل صيغة الكتلة عمليات التحويل سهلة. في هذا المثال، نحوّل كل كلمة إلى أحرف كبيرة.

title = 'the great escape'.gsub(/\w+/) { |w| w.capitalize }
puts title

الاستبدال باستخدام Hash

إذا مررت Hash بوصفه الوسيطة الثانية، فسيُبحث عن كل تطابق بوصفه مفتاحًا ويُستبدل بالقيمة المقابلة له. وهذا مفيد جدًا لخرائط الترجمة.

map = { 'cat' => 'kedi', 'dog' => 'kopek' }
puts('cat and dog'.gsub(/cat|dog/, map))

الإصدارات التي تعدّل السلسلة مباشرةً

يعدّل sub! وgsub! السلسلة مباشرةً ويعيدان nil إذا لم يحدث أي تغيير.

s = 'hello'
s.gsub!(/l/, 'L')
puts s
puts(s.gsub!(/z/, 'x').inspect)

إزالة النص

لحذف التطابقات، استبدلها بسلسلة نصية فارغة.

puts('h e l l o'.gsub(/\s/, ''))
puts('price: $42'.gsub(/[^0-9]/, ''))

الإشارات الخلفية إلى المجموعات المسماة

يمكنك تسمية المجموعات باستخدام (?<name>...) والإشارة إليها في النص البديل باستخدام \k<name>.

out = 'John Smith'.gsub(/(?<first>\w+) (?<last>\w+)/, '\k<last>, \k<first>')
puts out

اختبار سريع

ما الفرق بين sub وgsub؟

مراجعة: الاستبدال

لقد تعلمت تحويل السلاسل النصية باستخدام الأنماط:

  • يستبدل sub التطابق الأول، بينما يستبدل gsub جميع التطابقات
  • الإشارات الخلفية \1 و\& في عمليات الاستبدال
  • تحسب صيغة الكتلة النصوص البديلة ديناميكيًا
  • تربط وسيطة Hash التطابقات بالقيم
  • يعدّل sub! وgsub! السلسلة مباشرةً
puts('foo bar baz'.gsub(/b\w+/) { |w| w.upcase })

الأسئلة الشائعة

هل درس «الاستبدال» مجاني؟

نعم — نص درس «الاستبدال» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.

ماذا ستتعلم في «الاستبدال»؟

gsub مع الأنماط تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟

لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «الاستبدال»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟

نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ثوابت Regex
  2. المطابقة والالتقاط
  3. الاستبدال
  4. المجموعات المسماة والمراسي
← العودة إلى Ruby Academy