تمرين - دمج السلاسل باستخدام تسلسلات إلغاء الأحرف

مكتمل

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

تمرين - تنسيق السلاسل الحرفية في C#‎

في هذا التمرين، ستتعلم تقنيات مختلفة لعرض أحرف خاصة وإضافة أنواع مختلفة من التنسيق إلى الإخراج.

يتوفر محرر كود C # للاستخدام مباشرة في المتصفح: C# Code Editor. يوفر هذا المحرر بيئة خفيفة الوزن لكتابة وتشغيل واختبار كود C # دون الحاجة إلى تثبيت أي برنامج على جهاز الكمبيوتر المحلي الخاص بك.

تسلسلات إلغاء الأحرف

تسلسل أحرف الإلغاء هو إرشادات لوقت التشغيل لإدراج حرف خاص سيؤثر على إخراج السلسلة. في C#، يبدأ تسلسل حرف الإلغاء بسلة \ مائلة عكسية متبوعة بالحرف الذي تهرب منه. على سبيل المثال، \n سيضيف التسلسل سطرًا جديدًا، \t وسيضيف التسلسل علامة تبويب.

تستخدم التعليمات البرمجية التالية تسلسلات أحرف الإلغاء لإضافة خطوط وعلامات تبويب جديدة:

Console.WriteLine("Hello\nWorld!");
Console.WriteLine("Hello\tWorld!");

إذا قمت بتشغيل التعليمة البرمجية، فسترى المخرجات التالية:

Hello
World!
Hello   World!

ماذا لو كنت بحاجة إلى إدراج علامة اقتباس مزدوجة في سلسلة قيمة حرفية؟ إذا لم تستخدم تسلسل إلغاء الأحرف، فستخلط بين المحول البرمجي لأنه سيعتقد أنك تريد إنهاء السلسلة قبل الأوان. لن يفهم المحول البرمجي الغرض من الأحرف بعد علامة الاقتباس المزدوجة الثانية.

Console.WriteLine("Hello "World"!");

سيضع محرر التعليمات البرمجية C # خطا متعرجيا أحمر تحت World. ولكن إذا حاولت تشغيل التعليمات البرمجية على أي حال، فسترى الإخراج التالي:

Error summary:
  CS1003: Syntax error, ',' expected
  CS0103: The name 'World' does not exist in the current context
  CS1003: Syntax error, ',' expected

للتعامل مع هذا الموقف، استخدم تسلسل الإلغاء \" :

Console.WriteLine("Hello \"World\"!");

إذا قمت بتشغيل التعليمات البرمجية أعلاه، فسترى الإخراج التالي:

Hello "World"!

ماذا لو كنت بحاجة إلى استخدام شرطة مائلة لأغراض أخرى، مثل عرض مسار ملف؟

Console.WriteLine("c:\source\repos");

لسوء الحظ، تحجز C# الخط المائل العكسي (\) لسلاسل الإلغاء حتى إذا قمت بتشغيل التعليمات البرمجية، سيعرض المحول البرمجي الخطأ التالي:

(1,22): error CS1009: Unrecognized escape sequence

تكمن المشكلة في تسلسل \s. \r لا ينتج عن خطأ لأنه تسلسل إلغاء صالح لإرجاع حرف. ومع ذلك، لا تريد استخدام إرجاع حرف في هذا السياق.

لحل هذه المشكلة، يمكنك استخدام \\ لعرض مائل مائل عكسي واحد.

Console.WriteLine("c:\\source\\repos");

يؤدي الهروب من حرف الشرطة المائلة للخلف إلى الإخراج الذي قصدته:

c:\source\repos

تنسيق الإخراج باستخدام تسلسلات إلغاء الأحرف

  1. حدد كل التعليمات البرمجية في محرر التعليمات البرمجية C # ، واضغط على Delete أو Backspace لحذفها.

  2. لإنشاء نموذج لأداة سطر الأوامر، أدخل التعليمات البرمجية التالية في المحرر:

    Console.WriteLine("Generating invoices for customer \"Contoso Corp\" ... \n");
    Console.WriteLine("Invoice: 1021\t\tComplete!");
    Console.WriteLine("Invoice: 1022\t\tComplete!");
    Console.Write("\nOutput Directory:\t");
    
  3. والآن، تشغيل التعليمات البرمجية. ستشاهد النتيجة التالية في وحدة التحكم في الإخراج:

    Generating invoices for customer "Contoso Corp" ...
    
    Invoice: 1021           Complete!
    Invoice: 1022           Complete!
    
    Output Directory:    
    

حرفية لسلسلة حرفية

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

Console.WriteLine(@"    c:\source\repos    
        (this is where your code goes)");

لاحظ أن السلسلة تُمدد سطرين ثم تظهر المسافة البيضاء التي تم إنشاؤها باستخدام هذا التعليمة # C في الإخراج التالي.

    c:\source\repos    
        (this is where your code goes)

تنسيق الإخراج باستخدام القيم الحرفية للسلسلة الحرفية

  1. أضف السطر التالي من التعليمات البرمجية أسفل التعليمات البرمجية التي قمت بإنشائها مسبقا:

    Console.Write(@"c:\invoices");
    
  2. والآن، تشغيل التعليمات البرمجية. سترى النتيجة التالية التي تتضمن "دليل الإخراج":

    Generating invoices for customer "Contoso Corp" ...
    
    Invoice: 1021           Complete!
    Invoice: 1022           Complete!
    
    Output Directory:       c:\invoices
    

أحرف إلغاء Unicode

يمكنك أيضًا إضافة أحرف مرمزة في سلاسل حرفية باستخدام \u سلسلة الإلغاء ثم تعليمة برمجية من أربعة أحرف تمثل بعض الأحرف في Unicode (UTF-16).

// Kon'nichiwa World
Console.WriteLine("\u3053\u3093\u306B\u3061\u306F World!");

إشعار

توجد العديد من المحاذير هنا. أولاً، لن تعرض بعض وحدات التحكم مثل موجه الأوامر لـ Windows كل أحرف Unicode. سوف تستبدل تلك الأحرف بأحرف علامة الاستفهام في المقابل. أيضًا، الأمثلة المستخدمة هنا هي UTF-16. تتطلب بعض الأحرف UTF-32 ومن ثم تتطلب سلسلة إلغاء مختلفة. هذا موضوع مُعقد، وهذه الوحدة النمطية تهدف فقط إلى إظهار ما هو ممكن. اعتمادًا على حاجتك، قد تحتاج إلى قضاء قدر كبير من الوقت في التعلّم والعمل مع أحرف Unicode في تطبيقاتك.

تنسيق الإخراج باستخدام أحرف إلغاء unicode

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

  1. أضف التعليمة البرمجية التالية إلى تطبيقك:

    // To generate Japanese invoices:
    // Nihon no seikyū-sho o seisei suru ni wa:
    Console.Write("\n\n\u65e5\u672c\u306e\u8acb\u6c42\u66f8\u3092\u751f\u6210\u3059\u308b\u306b\u306f\uff1a\n\t");
    // User command to run an application
    Console.WriteLine(@"c:\invoices\app.exe -j");
    
  2. للتأكد من صحة التعليمات البرمجية الخاصة بك، قارنها بما يلي:

    Console.WriteLine("Generating invoices for customer \"Contoso Corp\" ... \n");
    Console.WriteLine("Invoice: 1021\t\tComplete!");
    Console.WriteLine("Invoice: 1022\t\tComplete!");
    Console.Write("\nOutput Directory:\t");
    Console.Write(@"c:\invoices");
    
    // To generate Japanese invoices:
    // Nihon no seikyū-sho o seisei suru ni wa:
    Console.Write("\n\n\u65e5\u672c\u306e\u8acb\u6c42\u66f8\u3092\u751f\u6210\u3059\u308b\u306b\u306f\uff1a\n\t");
    // User command to run an application
    Console.WriteLine(@"c:\invoices\app.exe -j");
    
  3. والآن، تشغيل التعليمات البرمجية. ستشاهد النتيجة التالية في وحدة التحكم في الإخراج:

    Generating invoices for customer "Contoso Corp" ...
    
    Invoice: 1021            Complete!
    Invoice: 1022            Complete!
    
    Output Directory:       c:\invoices
    
    日本の請求書を生成するには:
        c:\invoices\app.exe -j
    

خلاصة

إليك ما تعلمته حول تنسيق السلاسل الحرفية حتى الآن:

  • استخدم سلاسل إلغاء الأحرف عندما تحتاج إلى إدراج حرف خاص في سلسلة حرفية، مثل علامة تبويب \t أو سطر جديد أو علامة اقتباس \n مزدوجة \".
  • استخدم حرف إلغاء للشرطة المائلة \\ عند الحاجة إلى استخدام شركة مائلة في كل السيناريوهات الأخرى.
  • استخدم@التوجيه لإنشاء سلسلة حرفية تحافظ على تنسيق المسافات البيضاء وأحرف الشرطة المائلة للخلف في سلسلة.
  • استخدم \u مع تعليمة برمجية من أربعة أحرف لتمثيل أحرف Unicode (UTF-16) في سلسلة.
  • قد لا تتم طباعة أحرف Unicode بشكل صحيح استنادا إلى التطبيق.