Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التكرار عبر المحارف (strsplit)

جزء من قسم Fundamentals في رحلة R على Coddy — الدرس 65 من 78.

ماذا لو كنت بحاجة إلى معالجة كل حرف في سلسلة نصية بشكل فردي؟ على عكس المتجهات (vectors)، لا يمكنك التكرار مباشرة عبر أحرف السلسلة النصية في لغة R. تقوم الدالة strsplit() بحل هذه المشكلة عن طريق تقسيم السلسلة النصية إلى متجه من الأحرف.

تأخذ الدالة strsplit() وسيطين: السلسلة النصية المراد تقسيمها والفاصل. للتقسيم إلى أحرف فردية، استخدم سلسلة نصية فارغة "" كفاصل:

word <- "hello"
chars <- strsplit(word, "")[[1]]
print(chars)

المخرجات:

[1] "h" "e" "l" "l" "o"

لاحظ الـ [[1]] في النهاية. هذا لأن strsplit() تُرجع قائمة، ونحن بحاجة إلى استخراج العنصر الأول للحصول على متجه الأحرف الخاص بنا. بمجرد حصولك على الأحرف كمتجه، يمكنك تكرار العملية عليها باستخدام التقنيات التي تعلمتها بالفعل:

word <- "R"
chars <- strsplit(word, "")[[1]]
for (char in chars) {
  print(char)
}

الناتج:

[1] "R"

هذه التقنية ضرورية لمهام مثل عد أحرف معينة، أو عكس السلاسل النصية، أو التحقق من صحة المدخلات حرفاً بحرف.

challenge icon

التحدي

سهل

ستتلقى سطراً واحداً من المدخلات يحتوي على كلمة (على سبيل المثال، programming).

باستخدام strsplit() لتقسيم السلسلة النصية إلى أحرف فردية:

  1. قم بتقسيم الكلمة المدخلة إلى متجه (vector) من الأحرف
  2. قم بالمرور عبر كل حرف في المتجه باستخدام حلقة تكرارية (loop)
  3. احسب عدد مرات ظهور حرف "a" في الكلمة (حساس لحالة الأحرف)
  4. اطبع كل حرف في سطر مستقل باستخدام print()
  5. بعد انتهاء الحلقة، اطبع المجموع باستخدام cat() بالتنسيق التالي: Count of 'a': X متبوعاً بسطر جديد

على سبيل المثال، إذا كانت المدخلات هي:

banana

يجب أن تكون المخرجات:

[1] "b"
[1] "a"
[1] "n"
[1] "a"
[1] "n"
[1] "a"
Count of 'a': 3

التفسير: يتم تقسيم كلمة "banana" إلى أحرف c("b", "a", "n", "a", "n", "a"). يتم طباعة كل حرف، ويظهر حرف "a" ثلاث مرات.

ورقة مرجعية

لتقسيم سلسلة نصية إلى أحرف فردية، استخدم strsplit() مع سلسلة فارغة "" كفاصل:

word <- "hello"
chars <- strsplit(word, "")[[1]]
print(chars)

المخرجات:

[1] "h" "e" "l" "l" "o"

يقوم [[1]] باستخراج العنصر الأول من القائمة التي ترجعها strsplit()، مما يمنحك متجهاً حرفياً (character vector).

يمكنك بعد ذلك المرور عبر الأحرف باستخدام حلقة (loop):

word <- "R"
chars <- strsplit(word, "")[[1]]
for (char in chars) {
  print(char)
}

جرّب بنفسك

# قراءة المدخلات
con <- file("stdin", "r")
word <- suppressWarnings(readLines(con, n = 1))

# تهيئة عداد للحرف 'a'
count_a <- 0

# TODO: اكتب الكود الخاص بك أدناه
# 1. استخدم strsplit() لتقسيم الكلمة إلى أحرف فردية
# 2. قم بالمرور عبر كل حرف
# 3. اطبع كل حرف باستخدام print()
# 4. احسب عدد مرات ظهور الحرف 'a'

# إخراج عدد مرات ظهور 'a'
cat("Count of 'a': ", count_a, "\n", sep = "")
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals