الدرس 7 من 10
النصوص وطرقها
- 15 دقيقة
- 6 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
Split و Replace و StringBuilder
الشرح
النصّ في C# لا يتغيّر بعد إنشائه: كل طريقة عليه تُرجع نصًّا جديدًا وتترك الأصل، فـ name.Trim(); وحدها في سطر تحسب ثم ترمي النتيجة، والصواب name = name.Trim();. ومن طرقه: Trim() تحذف المسافات من الطرفين، وToUpper() تكبّر الأحرف اللاتينية، وContains("x") تسأل هل فيه نصّ ما، وReplace("a", "b") تستبدل كل ظهور لا الأول وحده. وتتسلسل: code.Trim().ToUpper().
وSubstring(start, length) تقتطع جزءًا، ووسيطها الثاني طول لا موضع نهاية، وترمي استثناءً إن تجاوز آخر النصّ. وSplit(',') تقسم النصّ عند كل فاصلة وتُرجع مصفوفة string[]، وstring.Join(" | ", parts) تعكسها فتصل العناصر بفاصل. وnew string('*', 4) تكرّر حرفًا أربع مرّات.
ولأن كل تعديل ينشئ نصًّا جديدًا، فبناء نصّ بـ += داخل حلقة ينسخه كلّه في كل دورة. أما StringBuilder من System.Text فيجمع القطع في مخزن واحد: Append تُلحق نصًّا أو حرفًا، وToString() تُخرج النصّ في النهاية.
المطلوب
أكمل NormalizeCode(code): رمز الهدية بلا مسافات في طرفيه وبأحرف كبيرة. وCensor(message, word): الرسالة وقد صار كل ظهور للكلمة فيها نجومًا بعدد أحرفها. وPreview(text, max): أول max حرفًا ثم ... إن كان النصّ أطول من max، وإلا النصّ كما هو. وFormatTags(csv): الوسوم المفصولة بفواصل، بلا مسافات حولها، موصولةً بـ " | ". وHealthBar(hp, maxHp) بـ StringBuilder: القوس [، ثم # لكل نقطة صحّة و- لكل نقطة مفقودة حتى maxHp، ثم ]؛ فـ HealthBar(3, 5) تُرجع [###--].
معايير التصحيح
6 معايير- NormalizeCode تحذف المسافات وتكبّر الأحرف
- Censor تستبدل كل ظهور للكلمة بنجوم بطولها
- Preview تقصّ النصّ الطويل وتُلحق ...
- Preview تترك النصّ القصير كما هو
- FormatTags تقسم وتنظّف ثم تصل بـ " | "
- HealthBar ترسم الشريط: [###--]