التكرار عبر النصوص
جزء من قسم الأساسيات في رحلة Ruby على Coddy — الدرس 67 من 88.
تماماً مثل المصفوفات، يمكن تكرار السلاسل النصية في Ruby حرفاً بحرف. تتيح لك طريقة each_char معالجة كل حرف في السلسلة النصية بشكل فردي.
إليك كيف يعمل ذلك:
word = "Ruby"
word.each_char do |char|
puts char
endيقوم هذا بإخراج كل حرف في سطر منفصل: R، u، b، y. يحمل متغير الكتلة char حرفاً واحداً في كل مرة بينما ينتقل المكرر (iterator) عبر السلسلة النصية.
إذا كنت بحاجة إلى كل من الحرف وموقعه، فاستخدم each_char.with_index:
word = "Hi"
word.each_char.with_index do |char, index|
puts "#{index}: #{char}"
endهذا ينتج:
0: H
1: iطريقة أخرى مفيدة هي chars، والتي تقوم بتحويل سلسلة نصية إلى مصفوفة من أحرفها. يتيح لك هذا استخدام جميع طرق المصفوفات التي تعلمتها بالفعل:
letters = "abc".chars
puts letters # المخرجات: a, b, cهذه الطرق مفيدة عندما تحتاج إلى تحليل النص، أو عد أحرف معينة، أو تحويل السلاسل النصية حرفاً بحرف.
التحدي
سهلاقرأ سطراً واحداً من المدخلات يحتوي على سلسلة نصية (على سبيل المثال، hello).
استخدم each_char.with_index للتكرار عبر السلسلة النصية وطباعة كل حرف مع موقعه. يجب أن يتبع كل سطر هذا التنسيق: Position 0: h
بعد طباعة جميع الأحرف مع مواقعها، اطبع العدد الإجمالي للأحرف في السلسلة النصية في سطر جديد بهذا التنسيق: Total characters: 5
على سبيل المثال، إذا كانت المدخلات hello، يجب أن تكون المخرجات:
Position 0: h
Position 1: e
Position 2: l
Position 3: l
Position 4: o
Total characters: 5إذا كانت المدخلات Ruby، يجب أن تكون المخرجات:
Position 0: R
Position 1: u
Position 2: b
Position 3: y
Total characters: 4إذا كانت المدخلات code، يجب أن تكون المخرجات:
Position 0: c
Position 1: o
Position 2: d
Position 3: e
Total characters: 4إذا كانت المدخلات A، يجب أن تكون المخرجات:
Position 0: A
Total characters: 1ورقة مرجعية
استخدم each_char للتكرار عبر كل حرف في سلسلة نصية:
word = "Ruby"
word.each_char do |char|
puts char
endاستخدم each_char.with_index للوصول إلى كل من الحرف وموقعه:
word = "Hi"
word.each_char.with_index do |char, index|
puts "#{index}: #{char}"
endاستخدم chars لتحويل سلسلة نصية إلى مصفوفة من الأحرف:
letters = "abc".chars
puts letters # المخرجات: a, b, cجرّب بنفسك
# قراءة المدخلات
str = gets.chomp
# TODO: اكتب الكود الخاص بك أدناه
# استخدم each_char.with_index للتكرار عبر السلسلة النصية
# اطبع كل حرف مع موقعه بالتنسيق: Position X: char
# اطبع العدد الإجمالي للأحرف بالتنسيق: Total characters: Xيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعاملات المنطقية - الجزء الرابع7حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على مدخلات المستخدم2المتغيرات وأنواع البيانات
الأرقام والمتغيراتنوع البيانات Stringنوع البيانات Booleanنوع البيانات Symbolالتحقق من أنواع البياناتقواعد التسميةملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة For مع النطاقاتحلقة WhileBreakNextمراجعة - المضروب (Factorial)حلقة Timesحلقة Untilالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةاختصارات العمليات الحسابيةمراجعة - العمليات الرياضية البسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
الإخراج باستخدام putsالإخراج باستخدام print و pالإخراج باستخدام المتغيراتالإدخال باستخدام getsدالة Chompتحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ