استبدال النص وتقسيمه
حوّل السلاسل باستخدام عمليات Regex.
استبدال النص وتقسيمه درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
الاستبدال والتقسيم
لا تقتصر التعبيرات النمطية على المطابقة. يمكن لسلاسل Swift استبدال النص المطابق وتقسيم السلسلة وفق نمط، مما يتيح تحويل السلاسل دون حلقات يدوية.
replacing(_:with:)
تُرجع replacing(_:with:) سلسلة جديدة يُستبدل فيها كل تطابق للنمط بنص الاستبدال.
let s = "a1b2c3"
let cleaned = s.replacing(/\d/, with: "*")
print(cleaned)استبدال الكلمات الكاملة
يمكن أن يكون النمط أي تعبير نمطي، ولذلك يمكنك استبدال جميع سلاسل الأرقام دفعة واحدة باستبدال واحد.
let s = "order 1234 done"
let masked = s.replacing(/\d+/, with: "#")
print(masked)التعديل باستخدام replace
تعدّل replace(_:with:) سلسلة var في مكانها بدلًا من إرجاع نسخة منها.
var text = "hello world"
text.replace(/o/, with: "0")
print(text)الاستبدال باستخدام إغلاق
يتلقى شكل الإغلاق من replacing(_:with:) كل مطابقة ويُرجع قيمة الاستبدال، مما يتيح استبدالات محسوبة.
let s = "a1 b2 c3"
let result = s.replacing(/\d+/) { match in
String((Int(match.0) ?? 0) * 10)
}
print(result)استخدام الالتقاطات في الاستبدال
يمكنك داخل الإغلاق قراءة مجموعات الالتقاط من المطابقة لبناء نص الاستبدال.
let s = "2024-05"
let out = s.replacing(/(\d+)-(\d+)/) { m in
"\(m.2)/\(m.1)"
}
print(out)split(separator:)
تدعم السلاسل split(separator:) مع تعبير نمطي، فتقسّم السلسلة حيثما يطابق النمط.
let csv = "a,b;c,d"
let parts = csv.split(separator: /[,;]/)
print(parts)التقسيم عند المسافات البيضاء
من المهام الشائعة تقسيم سلسلة إلى كلمات عند كل سلسلة متتابعة من المسافات البيضاء باستخدام /\s+/.
let line = "the quick brown"
let words = line.split(separator: /\s+/)
print(words.count)
print(words)تحديد عدد عمليات التقسيم
يحدّ المعامل maxSplits من عدد عمليات التقسيم، مع إبقاء الجزء المتبقي كما هو.
let s = "a-b-c-d"
let parts = s.split(separator: /-/, maxSplits: 1)
print(parts)إزالة المسافات والاستبدال
ادمج العمليات: استبدل الأنماط غير المرغوب فيها، ثم قسّم السلسلة لتنظيف الإدخال وتحويله إلى رموز ضمن مسار واحد.
let raw = " one,, two ,,three "
let cleaned = raw.replacing(/,+/, with: ",")
let items = cleaned.split(separator: ",").map { $0.trimmingCharacters(in: .whitespaces) }
print(items)replacing في مقابل replacingOccurrences
يعمل replacing الخاص بالتعبيرات النمطية على الأنماط، بينما يتعامل replacingOccurrences(of:with:) الأقدم مع السلاسل الفرعية الحرفية فقط. فضّل صيغة التعبير النمطي عند إجراء تعديلات تستند إلى نمط.
let s = "cat hat bat"
print(s.replacing(/[ch]at/, with: "X"))تحقق سريع
ما الناتج من "a1b2".replacing(/\d/, with: "-")؟
مراجعة
يمكنك استبدال المطابقات باستخدام replacing(_:with:) (بصيغة السلسلة أو الإغلاق) وreplace للتعديل في المكان، كما يمكنك تقسيم السلاسل وفق تعبير نمطي باستخدام split(separator:) مع maxSplits. وتحول هذه الأدوات التعبيرات النمطية إلى مجموعة متكاملة لتحويل النصوص.
الأسئلة الشائعة
هل درس «استبدال النص وتقسيمه» مجاني؟
نعم — نص درس «استبدال النص وتقسيمه» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «استبدال النص وتقسيمه»؟
حوّل السلاسل باستخدام عمليات Regex. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «استبدال النص وتقسيمه»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ثوابت Regex ومطابقتها
- مجموعات الالتقاط
- RegexBuilder DSL
- استبدال النص وتقسيمه