النوع char في C# هو كمية بطول 16 بت تمثّل أصغر مكوّنات النص القابلة للعنونة. يمكن لعدة محارف char أن تشكّل سلسلة نصية مثل "word"، كما يمكن معالجة كل محرف char على حدة. تُكتب القيم الحرفية لهذه المحارف بين علامتي تنصيص مفردتين، مثل 'A'.
تدعم محارف char في C# ترميز UTF-16 من يونيكود، لذا فبالإضافة إلى مجموعة المحارف اللاتينية، يمكن تمثيل كل أنظمة الكتابة المستخدمة في العالم تقريبًا، مثل الحرف اليوناني 'β'.
هناك العديد من الطرق المكتبية المدمجة لفحص محارف char والتعامل معها. يمكن إيجادها كطرق ثابتة في الصنف System.Char.
تُستخدم محارف char أحيانًا مع كائن StringBuilder. يمتلك هذا الكائن طرقًا تسمح ببناء سلسلة نصية محرفًا محرفًا والتعامل معها. وفي نهاية العملية يمكن استدعاء ToString عليه لإخراج سلسلة نصية كاملة.
في هذا التمرين، ستُنفّذ مجموعة جزئية من الإجراءات المساعدة لمساعدة مطوّر على تنظيف أسماء المعرّفات.
في المهام الخمس ستبني تدريجيًا الإجراء Clean.
يتكوّن المعرّف الصالح من صفر أو أكثر من الحروف والشرطات السفلية.
في جميع الحالات، من المضمون أن سلسلة الإدخال ليست null.
وإذا مُرّرت سلسلة نصية فارغة إلى دالة Clean، فيجب إرجاع سلسلة نصية فارغة.
لاحظ أن على المستدعي أن يتجنّب استدعاء الإجراء Clean بمعرّف فارغ، لأن مثل هذه المعرّفات لا تأثير لها.
نفّذ الطريقة (static) Identifier.Clean() لاستبدال أي مسافات بالشرطات السفلية.
وينطبق هذا أيضًا على المسافات البادئة واللاحقة.
Identifier.Clean("my Id");
// => "my___Id"
عدّل الطريقة (static) Identifier.Clean() لاستبدال أحرف التحكم بالسلسلة النصية "CTRL" المكتوبة بحروف كبيرة.
Identifier.Clean("my\0Id");
// => "myCTRLId",
عدّل الطريقة (static) Identifier.Clean() لتحويل kebab-case إلى camelCase.
Identifier.Clean("à-ḃç");
// => "àḂç"
عدّل الطريقة (static) Identifier.Clean() لتجاهل أي أحرف ليست حروفًا.
Identifier.Clean("1😀2😀3😀");
// => ""
عدّل الطريقة (static) Identifier.Clean() لتجاهل أي حروف يونانية في النطاق من 'α' إلى 'ω'.
Identifier.Clean("MyΟβιεγτFinder");
// => "MyΟFinder"
سجّل في Exercism لتتعلّم وتتقن C# عبر 62 مفهومًا178 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.