0Pricing
Java Academy · درس

التكرار على الأحرف

عالج كل char في سلسلة نصية

التكرار على الأحرف درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.

السلاسل مكوّنة من محارف

‏String سلسلة من المحارف. ويشغل كل محرف موضعًا يسمى فهرسًا، يبدأ من 0.

في "Java"، الفهرس 0 هو 'J'، والفهرس 1 هو 'a'، وهكذا. ويتيح التكرار زيارة كل char بالترتيب.

String word = "Java";
// indexes: 0=J 1=a 2=v 3=a

‏charAt يجلب محرفًا واحدًا

يعيد الأسلوب charAt(index) المحرف الموجود في موضع محدد داخل String.

تمتد الفهارس من 0 إلى length() - 1. ويؤدي طلب فهرس خارج هذا النطاق إلى طرح خطأ.

public class Main {
    public static void main(String[] args) {
        String word = "Java";
        System.out.println(word.charAt(0));
        System.out.println(word.charAt(3));
    }
}

ما طول السلسلة؟

يعيد الأسلوب length() عدد المحارف الموجودة في String.

بالنسبة إلى "Java"، يعيد القيمة 4. وبما أن الفهارس تبدأ من 0، فإن آخر فهرس صالح يكون دائمًا length() - 1.

public class Main {
    public static void main(String[] args) {
        String word = "Hello";
        System.out.println(word.length());
    }
}

التكرار باستخدام فهرس

تزيد حلقة for تقليدية الفهرس من 0 حتى length() - 1، وتستدعي charAt في كل مرة.

يمنحكم ذلك الموضع والمحرف معًا، وهو مفيد عندما يكون الفهرس مهمًا.

public class Main {
    public static void main(String[] args) {
        String word = "Java";
        for (int i = 0; i < word.length(); i++) {
            System.out.println(word.charAt(i));
        }
    }
}

حلقة for المحسّنة

إذا لم تكونوا بحاجة إلى الفهرس، فحوّلوا String إلى مصفوفة char باستخدام toCharArray() واستعملوا حلقة for-each.

تُقرأ الشيفرة بوضوح: لكل char اسمه c في الكلمة، نفّذوا إجراءً ما.

public class Main {
    public static void main(String[] args) {
        String word = "Java";
        for (char c : word.toCharArray()) {
            System.out.println(c);
        }
    }
}

الطباعة في سطر واحد

استخدموا System.out.print بدلًا من println لإبقاء المحارف في السطر نفسه.

وهذا مفيد عند إعادة بناء النص أو تحويله محرفًا بعد محرف.

public class Main {
    public static void main(String[] args) {
        String word = "Java";
        for (char c : word.toCharArray()) {
            System.out.print(c);
        }
        System.out.println();
    }
}

تحويل كل char

يمكنكم داخل الحلقة تغيير كل char قبل استخدامه. نُحوّل هنا كل حرف إلى حرف كبير أثناء المرور عليه.

نبني String جديدة لأن String الأصلية لا يمكن تعديلها؛ فالسلاسل غير قابلة للتغيير.

public class Main {
    public static void main(String[] args) {
        String word = "java";
        String result = "";
        for (char c : word.toCharArray()) {
            result += Character.toUpperCase(c);
        }
        System.out.println(result);
    }
}

التكرار إلى الخلف

لعكس String، كرروا من آخر فهرس وصولًا إلى 0 باستخدام charAt.

ابدؤوا i عند length() - 1 وأنقصوه حتى يصل إلى 0.

public class Main {
    public static void main(String[] args) {
        String word = "Java";
        for (int i = word.length() - 1; i >= 0; i--) {
            System.out.print(word.charAt(i));
        }
        System.out.println();
    }
}

انتبهوا إلى الحدود

كرروا دائمًا ما دام i < word.length()، وليس i <= word.length().

يؤدي تجاوز النهاية بمقدار واحد إلى استدعاء charAt بفهرس غير صالح، وطرح StringIndexOutOfBoundsException.

String word = "Hi";
// valid indexes: 0 and 1 only
// charAt(2) would crash

العثور على محرف

كرروا وقارنوا كل char باستخدام == للعثور على المحرف المطلوب. نعرض هنا فهرس أول 'a'.

نتوقف مبكرًا باستخدام break بمجرد العثور عليه.

public class Main {
    public static void main(String[] args) {
        String word = "Java";
        for (int i = 0; i < word.length(); i++) {
            if (word.charAt(i) == 'a') {
                System.out.println("Found at " + i);
                break;
            }
        }
    }
}

قراءة String

يشكّل التكرار على المحارف أساس مهام البحث والاستبدال والتحقق.

كلما احتجتم إلى فحص النص بدقة، كان المرور على كل char باستخدام حلقة هو الأداة القياسية.

for (char c : "ab".toCharArray()) {
    System.out.println(c);
}

تحقق سريع

اختبروا فهمكم للتكرار على المحارف.

مراجعة

استخدموا charAt(i) مع حلقة تعتمد على فهرس، أو toCharArray() مع حلقة for-each، لزيارة كل char.

كرروا ما دام i < length() للبقاء ضمن الحدود، وابنوا Strings جديدة لأن السلاسل غير قابلة للتغيير. ويدعم هذا النمط البحث في النص وتحويله.

الأسئلة الشائعة

هل درس «التكرار على الأحرف» مجاني؟

نعم — نص درس «التكرار على الأحرف» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.

ماذا ستتعلم في «التكرار على الأحرف»؟

عالج كل char في سلسلة نصية تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟

لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «التكرار على الأحرف»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟

نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. النوع البدائي char
  2. الأساليب المساعدة للأحرف
  3. التكرار على الأحرف
  4. عدّ الأحرف وتصفيتها
← العودة إلى Java Academy