عدّ المحارف وتكرارها
كرّر على النص بشكل صحيح عبر الرموز التعبيرية وعلامات التشكيل.
عدّ المحارف وتكرارها درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
عدّ المحارف
تعيد الخاصية count في String عدد قيم Character، وهو ما يساوي عدد المحارف التي يدركها المستخدم.
let word = "Swift"
print(word.count)يعكس العدّ المحارف المرئية
لأن Swift تعدّ عناقيد المحارف الرسومية، يُعد الحرف المشكول أو الرمز التعبيري محرفًا واحدًا، بما يطابق ما يراه القارئ.
let cafe = "caf\u{e9}"
print(cafe.count)صحة عدّ الرموز التعبيرية
يُعد الرمز التعبيري الواحد محرفًا واحدًا، حتى إذا امتد داخليًا على عدة بايتات وقيم عددية.
let s = "Hi\u{1F600}"
print("Characters:", s.count)تُعد الرموز التعبيرية المعقدة محرفًا واحدًا أيضًا
حتى الرموز التعبيرية المكوّنة من عدة قيم عددية، مثل رمز العائلة أو العلم، تُعد Character واحدًا، بخلاف العدّ الساذج للبايتات أو القيم العددية.
let flag = "\u{1F1FA}\u{1F1F8}"
print("Characters:", flag.count)
print("Scalars:", flag.unicodeScalars.count)التكرار باستخدام for-in
تمر حلقة for-in على سلسلة نصية بكل Character بالترتيب، وتتجاوز عناقيد المحارف الرسومية بصورة صحيحة.
for ch in "a\u{1F600}b" {
print(ch)
}عدّ محارف محددة
يمكنكم دمج التكرار مع عدّاد، أو استخدام filter، لعدّ مرات ظهور محرف معين.
let text = "banana"
let aCount = text.filter { $0 == "a" }.count
print("a appears:", aCount)التحقق من الفراغ
يفضَّل استخدام isEmpty بدلًا من مقارنة count بالصفر؛ فهذا أوضح وقد يكون أسرع.
let s = ""
print(s.isEmpty)
print("hello".isEmpty)الفهرسة لا تعتمد على الأعداد الصحيحة
نظرًا إلى اختلاف أحجام المحارف، تستخدم سلاسل Swift النصية String.Index بدلًا من الفهارس الصحيحة.
let word = "Swift"
let first = word[word.startIndex]
print(first)التكرار باستخدام الفهارس
يمكنكم التكرار باستخدام indices عندما تحتاجون إلى الموضع والمحرف معًا.
let word = "Hi"
for i in word.indices {
print(word[i])
}التعداد باستخدام الإزاحات
استخدموا enumerated() للحصول على إزاحة عددية متزايدة إلى جانب كل محرف.
for (i, ch) in "abc".enumerated() {
print(i, ch)
}أهمية العدّ الصحيح
يعني العدّ باستخدام عناقيد المحارف الرسومية أن فحوص الطول والاقتطاع والتحقق تعمل بصورة بديهية مع النصوص الدولية والرموز التعبيرية.
let name = "Jose\u{301}"
print("Visible length:", name.count)تحقق سريع
استرجعوا كيفية عدّ Swift لرمز تعبيري واحد.
مراجعة: عدّ المحارف والتكرار عليها
تعلّمتم أن count تعيد عدد عناقيد المحارف الرسومية، ولذلك يُعدّ الرمز التعبيري والحرف المشكول محرفًا واحدًا، وأن for-in تكرّر على المحارف بصورة صحيحة، وأن السلاسل النصية تستخدم String.Index بدلًا من الأعداد الصحيحة، وأن enumerated() توفر الإزاحات.
let s = "ab\u{1F600}"
print("Count:", s.count)
for (i, ch) in s.enumerated() { print(i, ch) }الأسئلة الشائعة
هل درس «عدّ المحارف وتكرارها» مجاني؟
نعم — نص درس «عدّ المحارف وتكرارها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «عدّ المحارف وتكرارها»؟
كرّر على النص بشكل صحيح عبر الرموز التعبيرية وعلامات التشكيل. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «عدّ المحارف وتكرارها»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- المحارف والعناقيد البيانية
- القيم السلمية لـ Unicode ونقاط الرموز
- عدّ المحارف وتكرارها
- تمثيلات الترميز: utf8 و utf16 و unicodeScalars