حالة الأحرف وإزالة الفراغات
جزء من قسم المنطق والتدفق في رحلة Swift على Coddy — الدرس 2 من 56.
تُعيد دوال حالة الأحرف (case methods) سلاسل نصية جديدة، فهي لا تعدل السلسلة الأصلية. استخدمها على النصوص التي تأتي من المستخدم قبل مقارنتها.
let raw = " Hello World "
print(raw.uppercased()) // " HELLO WORLD "
print(raw.lowercased()) // " hello world "لإزالة المسافات البيضاء في البداية والنهاية، استخدم trimmingCharacters(in:) من Foundation (المستوردة بالفعل على هذه المنصة):
let cleaned = raw.trimmingCharacters(in: .whitespaces)
print(cleaned) // "Hello World"
print(cleaned.count) // 11.whitespaces تغطي المسافات وعلامات الجدولة. استخدم .whitespacesAndNewlines عندما قد يحتوي الإدخال على \n في نهايته.
التحدي
مبتدئاقرأ سطرين من المدخلات. عاملهما كسلستين نصيتين للمقارنة دون مراعاة حالة الأحرف، مع تجاهل المسافات البيضاء المحيطة. اطبع:
matchعندما تكون النسخ المنظفة والمحولة لحالة الأحرف الصغيرة متساوية، وإلاdiffer- النسخة المنظفة (المقلمة) من السطر الأول بحالة الأحرف الكبيرة
بالنسبة للمدخلات Hello World في السطر الأول و HELLO world في السطر الثاني، يكون المخرج هو:
match
HELLO WORLDورقة مرجعية
تُرجع طرق حالة الأحرف للسلاسل النصية سلاسل جديدة (الأصلية لا تتغير):
str.uppercased() // "hello" → "HELLO"
str.lowercased() // "HELLO" → "hello"قم بإزالة المسافات البيضاء البادئة/اللاحقة باستخدام trimmingCharacters(in:):
let cleaned = raw.trimmingCharacters(in: .whitespaces) // المسافات وعلامات التبويب
let cleaned = raw.trimmingCharacters(in: .whitespacesAndNewlines) // يتضمن \nجرّب بنفسك
let a = readLine()!
let b = readLine()!
// TODO: إزالة المسافات الزائدة + تحويل للأحرف الصغيرة للمقارنة؛ طباعة match/differ ثم طباعة a بعد إزالة المسافات وتحويلها للأحرف الكبيرة
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتدفق
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلمات