تقسيم ودمج النصوص
جزء من قسم المنطق والتدفق في رحلة Swift على Coddy — الدرس 4 من 56.
أداتان يوميتان للعمل مع النصوص المحددة. كلتاهما تأتيان من Foundation، والتي تم استيرادها بالفعل.
تقوم components(separatedBy:) بتقسيم سلسلة نصية إلى مصفوفة من الـ String بناءً على أي فاصل تمرره:
let csv = "red,green,blue"
let parts = csv.components(separatedBy: ",")
print(parts) // ["red", "green", "blue"]العكس هو joined(separator:) على أي [String]:
let words = ["swift", "is", "fun"]
let line = words.joined(separator: " ")
print(line) // "swift is fun"غالبًا ما ستقوم بدمجها: التقسيم، والتحويل باستخدام map، ثم إعادة تجميعها معًا. إن نتيجة map على [String] تظل [String]، لذا فإن joined تعمل بشكل مباشر.
التحدي
سهلاقرأ سطراً واحداً من المدخلات: قائمة كلمات مفصولة بفاصلة.
اطبع ثلاثة أسطر:
- عدد الكلمات بعد التقسيم بناءً على
, - الكلمات مجمعة مرة أخرى باستخدام
>(مسافة، علامة أكبر من، مسافة)، بـ أحرف كبيرة - أطول كلمة في القائمة (بعد التقسيم). إذا تساوت كلمتان في الطول، استخدم الكلمة التي تظهر أولاً.
للمدخلات red,green,blue، المخرجات هي:
3
RED > GREEN > BLUE
greenورقة مرجعية
تقسيم سلسلة نصية إلى مصفوفة باستخدام components(separatedBy:):
let parts = "red,green,blue".components(separatedBy: ",")
// ["red", "green", "blue"]إعادة دمج مصفوفة من السلاسل النصية باستخدام joined(separator:):
let line = ["swift", "is", "fun"].joined(separator: " ")
// "swift is fun"نمط شائع — التقسيم، التحويل باستخدام map، ثم إعادة الدمج:
let result = "red,green,blue"
.components(separatedBy: ",")
.map { $0.uppercased() }
.joined(separator: " > ")
// "RED > GREEN > BLUE"جرّب بنفسك
let line = readLine()!
let words = line.components(separatedBy: ",")
// مهام: طباعة العدد، والكلمات مدمجة بحروف كبيرة مفصولة بـ " > "، وأول أطول كلمة
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتدفق
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلمات