0Pricing
Java Academy · درس

كتل النص وString.format

اكتب سلاسل نصية متعددة الأسطر باستخدام كتل النص، ونسّق البيانات باستخدام أنماط String.format

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

كتل النصوص وString.format

تتيح كتل النصوص في Java 15+ كتابة ثوابت نصية متعددة الأسطر من دون محارف هروب. وعند دمجها مع String.format وformatted()، فإنها تجعل إخراج النصوص المعقدة واضحًا وسهل القراءة.

ما كتل النصوص؟

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

// Traditional multi-line string
String old = "SELECT id, name, email\n" +
             "FROM users\n" +
             "WHERE active = true\n" +
             "ORDER BY name;";

// Text block (Java 15+) — much cleaner
String sql = """
    SELECT id, name, email
    FROM users
    WHERE active = true
    ORDER BY name;
    """;

System.out.println(sql);

التعامل مع المسافات البادئة

تزيل كتل النصوص تلقائيًا المسافات البيضاء المشتركة في بداية الأسطر. ويتحكم موضع """ الختامي في المسافة البادئة.

// Leading spaces up to the closing """ are stripped
String json = """
        {
            "name": "Alice",
            "role": "admin"
        }
        """;
// Output has no leading spaces (stripped by common indent)
System.out.println(json);
// {
//     "name": "Alice",
//     "role": "admin"
// }

علامات الاقتباس المضمّنة

يمكن أن تحتوي كتل النصوص على علامات اقتباس مزدوجة من دون محارف هروب، ما دامت ثلاث علامات اقتباس متتالية لا تظهر فيها. وتُعد علامة الاقتباس المفردة " أو العلامتان "" صحيحتين.

String html = """
    <div class="container">
        <p class="title">Hello, World!</p>
        <a href="https://example.com">Click here</a>
    </div>
    """;
System.out.println(html);
// Note: no need to escape " inside the block

كتل النصوص لقوالب JSON

تتألق كتل النصوص عند استخدامها لقوالب JSON وHTML وXML وSQL في الاختبارات أو الإعدادات.

String request = """
    {
        "email": "alice@example.com",
        "password": "secret123",
        "plan": "PRO"
    }
    """;

// In tests: compare expected JSON
String expected = """
    {
      "status": "created",
      "id": 42
    }
    """;
// Perfect for MockMvc test assertions
System.out.println(request);

استخدام formatted() مع كتل النصوص

ادمجوا كتل النصوص مع formatted()، المتاح في Java 15+، لإنشاء قوالب تتضمن معاملات.

String name = "Alice";
long orderId = 1234L;
double total = 149.99;

String email = """
    Dear %s,

    Your order #%d has been confirmed.
    Total charged: $%.2f

    Thank you for shopping with us!
    """.formatted(name, orderId, total);

System.out.println(email);
// Dear Alice,
// Your order #1234 has been confirmed.
// Total charged: $149.99

محارف الهروب في كتل النصوص

تدعم كتل النصوص \n و\t، إضافة إلى \ في Java 14+ لمتابعة السطر، و\s للحفاظ على المسافات البيضاء في نهاية السطر.

// \s forces a space (preserves trailing whitespace on line)
String padded = """
    line one  \s
    line two   \s
    """;

// \ (backslash at end of line) joins lines in source but keeps them as one
String poem = """
    Roses are red, \
    violets are blue.
    """;
System.out.println(poem); // Roses are red, violets are blue.

مرجع String.format

أهم محددات التنسيق في String.format:

  • %s — String
  • %d — عدد صحيح
  • %f — عدد عشري
  • %.2f — منزلتان عشريتان
  • %n — سطر جديد خاص بالمنصة
  • %x — نظام ست عشري
  • %10d — محاذاة إلى اليمين ضمن 10 محارف
System.out.printf("%s | %d | %.2f | %X%n", "Item", 42, 9.99, 255);
// Item | 42 | 9.99 | FF

String formatted = String.format("%-20s %6.2f%n", "Mechanical Keyboard", 129.95);
System.out.print(formatted);
// Mechanical Keyboard 129.95

// Named format with text block
System.out.printf("""
    Order: %s
    Total: $%.2f
    Status: %s%n""", "ORD-001", 99.99, "SHIPPED");

stripIndent وtranslateEscapes في كتل النصوص

يعمل أسلوبان من أساليب String مع كتل النصوص: يزيل stripIndent() المسافات البيضاء المشتركة في بداية الأسطر، بينما يعالج translateEscapes() محارف الهروب في سلسلة نصية وقت التشغيل.

String raw = "  hello\\n  world";
System.out.println(raw);                    // hello\n  world
System.out.println(raw.translateEscapes()); // hello (newline) world

// stripIndent removes common leading whitespace
String indented = "    line 1\n    line 2\n    line 3";
System.out.println(indented.stripIndent()); // line 1\nline 2\nline 3

تطبيق عملي: قالب بريد إلكتروني بصيغة HTML

إنشاء قالب بريد إلكتروني بصيغة HTML يتضمن معاملات باستخدام كتلة نصوص.

static String buildWelcomeEmail(String name, String activationLink) {
    return """
        <!DOCTYPE html>
        <html>
          <body>
            <h1>Welcome, %s!</h1>
            <p>Click the link below to activate your account:</p>
            <a href="%s">Activate Account</a>
          </body>
        </html>
        """.formatted(name, activationLink);
}

System.out.println(buildWelcomeEmail("Alice",
    "https://app.example.com/activate?token=abc123"));

كتل النصوص مقابل String.join

بالنسبة إلى قوائم العناصر، يكون String.join أو Collectors.joining أكثر مرونة من كتلة النصوص. استخدموا كتل النصوص للمحتوى الثابت متعدد الأسطر، وjoin للقوائم الديناميكية.

import java.util.*;
import java.util.stream.*;

List<String> features = List.of("Unlimited storage", "Priority support", "AI assistant");

// Dynamic list: join
String bullet = features.stream()
    .map(f -> "  • " + f)
    .collect(Collectors.joining("\n"));
System.out.println(bullet);
// • Unlimited storage
// • Priority support
// • AI assistant

// Fixed template: text block + formatted
String plan = """
    PRO Plan — $29/month
    Features:
    %s
    """.formatted(bullet);
System.out.println(plan);

تحقق سريع

ما الذي يتحكم فيه موضع """ الختامي في كتلة النصوص؟

مراجعة: كتل النصوص وString.format

أهم النقاط:

  • تستخدم كتل النصوص، المتاحة في Java 15+، ثلاث علامات اقتباس وتحافظ على بنية النص متعدد الأسطر من دون محارف هروب
  • تُزال المسافات البيضاء المشتركة في بداية الأسطر تلقائيًا استنادًا إلى موضع الإغلاق \"\"\"
  • لا تحتاج علامات الاقتباس المزدوجة داخل كتل النصوص إلى محارف هروب
  • استخدموا .formatted() مع كتلة نصوص لإنشاء قوالب تتضمن معاملات
  • محددات String.format: %s و%d و%.2f و%n و%x، إضافة إلى أعلام العرض والمحاذاة
  • استخدموا \s في نهاية السطر للحفاظ على المسافات اللاحقة، و\ في نهاية السطر لضم الأسطر

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

هل درس «كتل النص وString.format» مجاني؟

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

ماذا ستتعلم في «كتل النص وString.format»؟

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

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

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

كم من الوقت يستغرق درس «كتل النص وString.format»؟

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

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

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

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

  1. عدم قابلية String للتغيير ومجمّع السلاسل النصية
  2. StringBuilder للضم الفعّال
  3. كتل النص وString.format
  4. التعابير النمطية باستخدام Pattern وMatcher
← العودة إلى Java Academy