البحث في النصوص
جزء من قسم المنطق والتدفق في رحلة Swift على Coddy — الدرس 3 من 56.
ثلاثة فحوصات سريعة لمعرفة ما إذا كانت سلسلة فرعية موجودة داخل أخرى:
let email = "alice@coddy.tech"
print(email.contains("@")) // true
print(email.hasPrefix("alice")) // true
print(email.hasSuffix(".tech")) // truecontains يأخذ أي سلسلة فرعية، بينما hasPrefix و hasSuffix ينظران فقط إلى البداية أو النهاية. جميعها حساسة لحالة الأحرف، لذا قم بتحويل السلسلة إلى أحرف صغيرة أولاً إذا كان ذلك يهم.
اجمع بين هذه مع ! لإجراء اختبار "مفقود" سريع:
if !email.contains("@") {
print("not a valid email")
}التحدي
سهلاقرأ سطراً واحداً من المدخلات. تحقق من صحته كـ بريد إلكتروني بسيط من خلال التحقق من كل مما يلي:
- يحتوي على
@واحدة بالضبط (استخدمfilter+countعلى الأحرف) - لا يبدأ ولا ينتهي بـ
@ - ينتهي بـ
.tech، أو.com، أو.org(غير حساس لحالة الأحرف)
اطبع valid عندما تنجح جميع عمليات التحقق، وإلا اطبع invalid. قارن مع نسخة المدخلات المحولة إلى أحرف صغيرة (lower-cased).
للمدخل alice@CODDY.TECH، المخرج هو valid.
ورقة مرجعية
تحقق مما إذا كانت السلسلة النصية تحتوي على سلسلة فرعية، أو تبدأ/تنتهي بها:
let email = "alice@coddy.tech"
email.contains("@") // true – في أي مكان في السلسلة النصية
email.hasPrefix("alice") // true – في البداية
email.hasSuffix(".tech") // true – في النهايةجميع الحالات الثلاث حساسة لحالة الأحرف. استخدم .lowercased() أولاً إذا لزم الأمر:
email.lowercased().hasSuffix(".tech")استخدم ! لاختبار الغياب:
if !email.contains("@") { print("not a valid email") }جرّب بنفسك
let line = readLine()!
// TODO: التحقق من وجود رمز '@' واحد فقط، ليس في الأطراف، وأن تكون اللاحقة ضمن [.tech .com .org]
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتدفق
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلمات