الدرس 7 من 10

النصوص وطرقها

هدف الدرس

Split و Replace و StringBuilder

01

الشرح

النصّ في 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() تُخرج النصّ في النهاية.

02

المطلوب

أكمل NormalizeCode(code): رمز الهدية بلا مسافات في طرفيه وبأحرف كبيرة. وCensor(message, word): الرسالة وقد صار كل ظهور للكلمة فيها نجومًا بعدد أحرفها. وPreview(text, max): أول max حرفًا ثم ... إن كان النصّ أطول من max، وإلا النصّ كما هو. وFormatTags(csv): الوسوم المفصولة بفواصل، بلا مسافات حولها، موصولةً بـ " | ". وHealthBar(hp, maxHp) بـ StringBuilder: القوس [، ثم # لكل نقطة صحّة و- لكل نقطة مفقودة حتى maxHp، ثم ]؛ فـ HealthBar(3, 5) تُرجع [###--].

معايير التصحيح

6 معايير
  1. NormalizeCode تحذف المسافات وتكبّر الأحرف
  2. Censor تستبدل كل ظهور للكلمة بنجوم بطولها
  3. Preview تقصّ النصّ الطويل وتُلحق ...
  4. Preview تترك النصّ القصير كما هو
  5. FormatTags تقسم وتنظّف ثم تصل بـ " | "
  6. HealthBar ترسم الشريط: [###--]
Program.cs
المخرجاتC# · Mono 6.6 · Judge0

يُترجَم الكود ويعمل على السيرفر…

–/6

يُترجَم الكود ويعمل على السيرفر…

6 معايير في بطاقة «المطلوب».