0Pricing
Java Academy · درس

المسافات البادئة وإزالتها

تحكّموا في المسافات البيضاء غير المقصودة

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

المسافات البيضاء العرضية مقابل الأساسية

عندما تضبط مسافة بادئة لكتلة نصية لتتوافق مع شفرتك، تكون تلك المسافة البادئة غير مقصودة، ولا ينبغي أن تكون جزءًا من السلسلة النصية. يزيلها Java تلقائيًا، مع الاحتفاظ فقط بالمسافات البيضاء الأساسية.

المحدِّد الختامي يحدد الهامش

يفحص Java جميع أسطر المحتوى والعلامة """ الختامية للعثور على العمود المشترك الأقرب إلى اليسار الذي يحتوي على محرف غير فارغ. تتم إزالة كل ما يقع إلى يسار ذلك الهامش.

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

تحريك علامتي الاقتباس الختاميتين إلى اليسار

إذا كانت العلامة """ الختامية تقع إلى يسار المحتوى، فسيتم الاحتفاظ بالمسافات البادئة الإضافية في كل سطر باعتبارها مسافات بيضاء أساسية.

public class Main {
    public static void main(String[] args) {
        String text = """
                Hello
                World
        """;
        System.out.print(text);
    }
}

تُزال المسافات البيضاء اللاحقة

تُزال المسافات الموجودة في نهاية كل سطر تلقائيًا. ويمنع ذلك الأخطاء الناتجة عن المسافات اللاحقة غير المرئية، وهي أخطاء شائعة في السلاسل النصية العادية.

public class Main {
    public static void main(String[] args) {
        String text = """
            line one
            line two
            """;
        for (String line : text.split("\n")) {
            System.out.println("<" + line + ">");
        }
    }
}

الدالة stripIndent

تطبّق الدالة String.stripIndent() الخوارزمية نفسها لإزالة المسافات البيضاء غير المقصودة من أي سلسلة نصية وقت التشغيل. وهذه هي الخوارزمية التي تستخدمها الكتل النصية داخليًا.

public class Main {
    public static void main(String[] args) {
        String raw = "    a\n    b\n    c\n";
        System.out.print(raw.stripIndent());
    }
}

التحكم في المسافة البادئة الداخلية

يتم الاحتفاظ بالمسافة البادئة بالنسبة إلى الهامش. في هذا المثال، يكون السطر الثاني مزاحًا بمسافة بادئة أكبر من السطر الأول، وتبقى هذه الزيادة في الناتج.

public class Main {
    public static void main(String[] args) {
        String tree = """
            root
              child
                grandchild
            """;
        System.out.print(tree);
    }
}

الدالة indent

تضيف String.indent(int n) عدد n من المسافات إلى بداية كل سطر، وتضمن وجود سطر جديد في النهاية. وهي مفيدة لتضمين كتل النصوص داخل بعضها.

public class Main {
    public static void main(String[] args) {
        String text = """
            a
            b
            """;
        System.out.print(text.indent(4));
    }
}

strip مقابل trim

استخدم strip() لإزالة المسافات البيضاء البادئة واللاحقة من الكتلة بأكملها. وعلى خلاف trim() الأقدم، تراعي strip() معيار Unicode.

public class Main {
    public static void main(String[] args) {
        String text = """
            
            content
            
            """;
        System.out.println("[" + text.strip() + "]");
    }
}

علامتا الاقتباس الختاميتان في سطر مستقل

إذا كانت العلامة """ الختامية في سطر مستقل، فتنتهي السلسلة النصية بسطر جديد لاحق. ضعها مباشرةً بعد آخر محرف لإزالة ذلك السطر الجديد.

public class Main {
    public static void main(String[] args) {
        String withNewline = """
            done
            """;
        String noNewline = """
            done""";
        System.out.println("A:" + withNewline.length());
        System.out.println("B:" + noNewline.length());
    }
}

المحاذاة مع الشفرة

يمكنك ضبط المسافة البادئة للكتلة بأكملها لتتوافق مع الشفرة المحيطة بها من أجل سهولة القراءة، وستختفي المسافة البادئة غير المقصودة من القيمة.

public class Main {
    static String menu() {
        return """
                Start
                Options
                Quit
                """;
    }
    public static void main(String[] args) {
        System.out.print(menu());
    }
}

التحقق من الهامش

لتصحيح مشكلة إزالة المسافات، أحط كل سطر بعلامات. يوضح ذلك بالضبط المسافات البادئة التي بقيت.

public class Main {
    public static void main(String[] args) {
        String block = """
            x
              y
            """;
        for (String line : block.split("\n")) {
            System.out.println("|" + line + "|");
        }
    }
}

تحقق سريع

ما الذي يحدد مقدار المسافات البيضاء البادئة (غير المقصودة) التي تُزال من الكتلة النصية؟

مراجعة

لقد تعلمتم كيفية التعامل مع المسافة البادئة وإزالتها:

  • تُزال المسافة البادئة غير المقصودة تلقائيًا
  • يمكن أن يحدد موضع """ الختامية الهامش
  • تُزال المسافات البيضاء اللاحقة في الأسطر
  • تساعد الدوال stripIndent() وindent(n) وstrip() وقت التشغيل
  • يتحكم موضع علامتي الاقتباس الختاميتين في السطر الجديد النهائي

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

هل درس «المسافات البادئة وإزالتها» مجاني؟

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

ماذا ستتعلم في «المسافات البادئة وإزالتها»؟

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

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

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

كم من الوقت يستغرق درس «المسافات البادئة وإزالتها»؟

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

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

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

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

  1. تعريف Text Blocks
  2. المسافات البادئة وإزالتها
  3. Escapes في Text Blocks
  4. حالات الاستخدام: JSON وSQL
← العودة إلى Java Academy