المسارات
/
Java
Java
/
التمارين
/
نظيف تمامًا
نظيف تمامًا

نظيف تمامًا

تمرين تعلّمي

مقدمة

المحارف

المحارف

النوع الأولي char في Java هو تمثيل بـ16 بتة لمحرف واحد. يمكن أن تتكوّن سلسلة نصية من عدة محارف من النوع char، مثل "word"، كما يمكن معالجة كل محرف من النوع char على حدة. القيمة الحرفية من النوع char تُحاط بعلامة اقتباس مفردة (مثل 'A').

char lowerA = 'a';
char upperB = 'B';

الحصول على محارف String

تُرجع طريقة String.toCharArray محارف السلسلة النصية في هيئة مصفوفة. وكما ذُكر في المصفوفات، يمكنك استخدام حلقة for للمرور على عناصر المصفوفة.

String text = "Hello";
char[] asArray = text.toCharArray();

for (char ch: asArray) {
    System.out.println(ch);
}

// Outputs:
// H
// e
// l
// l
// o

صنف Character

توجد طرق مدمجة كثيرة في المكتبة لفحص المحارف من النوع char ومعالجتها. يمكن إيجادها كطرق ساكنة في صنف java.lang.Character. إليك بعض الأمثلة:

Character.isWhitespace(' ');    // true
Character.isWhitespace('#');    // false

Character.isLetter('a');        // true
Character.isLetter('3');        // false

Character.isDigit('6');         // true
Character.isDigit('?');         // false

إضافة محرف من النوع char إلى سلسلة نصية

يمكن استخدام العامل + لإضافة محرف من النوع char إلى سلسلة نصية.

'a' + " banana"     // => "a banana"
"banana " + 'a'     // => "banana a"
Caution

احذر ألا تستخدم + لضم محرفين من النوع char معًا لتكوين سلسلة نصية! إضافة محرفين بهذه الطريقة تعطي int، وليس سلسلة نصية! على سبيل المثال:

'b' + 'c';
// => 197 (not the String "bc")

وذلك لأن Java ترفع المحرف من النوع char إلى int (انظر 4.2 الأنواع الأولية والقيم في مواصفات لغة Java).

ومع ذلك، عندما يكون عدد المحارف المراد إضافتها كبيرًا، فقد يكون من الأكثر كفاءة استخدام StringBuilder بدلًا من ذلك:

StringBuilder builder = new StringBuilder();
builder.append('a');
builder.append('b');
builder.append('c');

String builtString = builder.toString();
// => abc

التعليمات

في هذا التمرين ستُنفّذ مجموعة جزئية من الدوال المساعدة لمساعدة مطوّر على تنظيف أسماء SqueakyClean.

ستبني الطريقة clean تدريجيًا عبر 4 مهام. يتكوّن اسم SqueakyClean الصالح من صفر أو أكثر من الحروف والشرطات السفلية.

في جميع الحالات، من المضمون أن السلسلة النصية المدخلة لن تكون null. لاحظ أن الطريقة clean يجب أن تعامل السلسلة النصية الفارغة على أنها صالحة.

1. استبدل أي مسافات تصادفها بشرطات سفلية

نفّذ الطريقة (static) SqueakyClean.clean() لاستبدال أي مسافات بشرطات سفلية. ينطبق هذا أيضًا على المسافات في بداية السلسلة ونهايتها.

SqueakyClean.clean("my   Id");
// => "my___Id"

2. حوّل kebab-case إلى camelCase

عدّل الطريقة (static) SqueakyClean.clean() لتحويل kebab-case إلى camelCase.

SqueakyClean.clean("a-bc");
// => "aBc"

3. حوّل لييت إلى نص عادي

عدّل الطريقة (static) SqueakyClean.clean() لتحويل لييت إلى نص عادي.

للتبسيط، سنستبدل فقط 4 و3 و0 و1 و7 بـ a وe وo وl وt على الترتيب.

SqueakyClean.clean("H3ll0 W0rld");
// => "Hello_World"
SqueakyClean.clean("4 73s7");
// => "a_test"

4. استبعد المحارف التي ليست حروفًا

عدّل الطريقة (static) SqueakyClean.clean() لاستبعاد أي محارف ليست حروفًا.

SqueakyClean.clean("a$#.b");
// => "ab"
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Java Exercism

مستعد لبدء نظيف تمامًا؟

سجّل في Exercism لتتعلّم وتتقن Java عبر 26 مفهومًا158 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.