العودة إلى المدونة

العمل مع السلاسل النصية في Ruby

العمل مع السلاسل النصية في Ruby

Ruby هي لغة برمجة تفسيرية، ديناميكية، انعكاسية، كائنية التوجه . تم تطويرها بواسطة Yukihiro Matsumoto، وتركز Ruby على البساطة والإنتاجية. تتيح بنيتها البرمجية الأنيقة للمطورين قراءة وكتابة الأكواد البرمجية بشكل أسهل.

في هذا الدليل، سنعمل مع السلاسل النصية في Ruby.

المتطلبات الأساسية

لتنفيذ الخطوات الموضحة في هذا البرنامج التعليمي، تحتاج إلى المكونات التالية:

نوع البيانات النصي (String)

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

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

الخطوة 1 – إنشاء وطباعة السلاسل النصية

في Ruby، يتم إحاطة السلاسل النصية إما بعلامات اقتباس مفردة ( ') أو علامات اقتباس مزدوجة ( "). فيما يلي سلسلتان نصيتان صالحتان في Ruby:

لطباعة أي مخرجات على شاشة وحدة التحكم، تأتي Ruby مع دالة print :

حان الوقت لتطبيق ذلك عمليًا. أنشئ ملف Ruby جديدًا باسم practice.rb وأدخل الأكواد التالية:

قم بتشغيل الكود:

Strings in Ruby 1

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

بعد ذلك، قم بتشغيل الكود مرة أخرى:

Strings in Ruby 2

الخطوة 2 – متغيرات السلسلة النصية

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

في Ruby، للإعلان عن متغير سلسلة نصية، حدد اسم المتغير وقم بتعيين قيمة سلسلة نصية له:

اكتب الكود التالي في practice.rb:

قم بتشغيل الكود:

هنا:

  • لقد قمنا بتعريف متغيرين first_half و second_half، تم تعيين قيمة سلسلة نصية لكل منهما.
  • تقوم دالة puts بطباعة قيمة المتغيرات.

الخطوة 3 – دمج السلاسل النصية

من خلال الدمج، يمكننا أخذ سلاسل نصية متعددة وضمها معًا لإنشاء سلسلة نصية جديدة. يُشار إلى دمج السلاسل النصية بواسطة عامل الدمج ( +). لاحظ أن هذا الرمز هو أيضًا عامل الجمع عند العمل مع العمليات الحسابية.

دعونا نحاول إجراء دمج السلاسل النصية على السلاسل التي أعلنا عنها حتى الآن:

قم بتشغيل الكود:

كما يوضح الناتج، فإن الدمج لا يضيف أي حرف إضافي بين السلاسل النصية. ولهذا السبب فإن fox و jumps مدمجتان معًا. يمكننا إصلاح ذلك عن طريق إضافة مسافة فارغة بعد fox:

قم بتشغيل الكود:

الآن يبدو الناتج أفضل.

يعمل دمج السلاسل النصية أيضًا مع المتغيرات. ألقِ نظرة على المثال التالي:

Strings in Ruby 3

قم بتشغيل الكود:

يوضح المثال التالي سلسلة طويلة من دمج النصوص:

Strings in Ruby 4

قم بتشغيل الكود:

حتى الآن، تعاملنا فقط مع متغيرات النصوص. ماذا لو كانت هناك أنواع متغيرات مختلفة؟ البرنامج التالي يختبر هذا السيناريو:

Strings in Ruby 5

عند محاولة تشغيل هذا البرنامج، سيقوم Ruby برمي رسالة خطأ:

ومع ذلك، يمكننا تحويل العدد الصحيح إلى نص لتجنب هذه المشكلة:

Strings in Ruby 6

هنا:

  • الدالة to_s تقوم بتحويل قيمة المتغير إلى نص.

يعد تحويل الأرقام إلى نصوص أمراً شائعاً عند التعامل مع عناصر مثل الرموز البريدية، والعملات، وأرقام الهواتف، والبيانات الرقمية الأخرى.

الخطوة 4 – إدراج النصوص

على الرغم من أن دمج النصوص ميزة قوية، إلا أنه قد يصبح معقداً بسهولة شديدة. في كثير من الحالات، ربما تجد نفسك قد نسيت عامل الدمج ( +)، مما يسبب صداعاً كبيراً. علاوة على ذلك، عند التعامل مع أنواع بيانات مختلفة، يجب تحويلها إلى نص أولاً. لحسن الحظ، يتيح Ruby طرقاً أخرى لإدخال قيم المتغيرات في النص باستخدام ميزة إدراج النصوص.

إليك كيف يبدو ذلك. على سبيل المثال، بدلاً من استخدام:

سنقوم باستخدام:

على الرغم من أن الصيغة قد تبدو غريبة قليلاً، إلا أنها تبسط الكود بشكل كبير. لا داعي لاستدعاء الدالة to_s يدوياً لتحويل قيمة المتغير إلى نص.

دعنا نستخدم هذه التقنية الجديدة لتحديث الكود السابق لدينا:

Strings in Ruby 7

قم بتشغيل الكود:

الخطوة 5 – النصوص الحرفية وقيم النصوص

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

  • النص الحرفي: هو النص المكتوب في الكود المصدري (بما في ذلك علامات الاقتباس).
  • قيمة النص: هي القيمة التي يتم طباعتها في المخرجات (بدون علامات الاقتباس).

على سبيل المثال، النص التالي هو نص حرفي:

وقيمة النص الخاصة به ستكون أهلاً بالعالم.

الخطوة 6 – تخطي علامات الاقتباس والفاصلة العليا

كما أوضحنا، تُستخدم علامات الاقتباس والفواصل العليا للدلالة على النصوص في الكود المصدري. هذا يطرح مشكلة: لا يمكنك وضعها مباشرة في النص. وإلا، فسيؤدي ذلك إلى حدوث مشكلات. يوضح الكود التالي ذلك:

Strings in Ruby 8

هناك تكتيكات مختلفة للالتفاف على هذه المشكلة.

  • استخدام صيغة نصية بديلة

هذه هي أبسط طريقة لتجاوز المشكلة. إذا كان نصك يحتاج إلى علامات اقتباس مفردة، فاستخدم علامات اقتباس مزدوجة في النص الحرفي (والعكس صحيح).

دعنا نصلح المثال السابق:

مثال آخر سيكون:

ومع ذلك، لن ينجح هذا في كل الحالات. على سبيل المثال:

  • استخدام رموز الهروب

غالباً ما يُشار إلى الشرطة المائلة العكسية ( \) باسم رمز الهروب. وهي تمنع Ruby من تفسير الرمز التالي حرفياً. دعنا نصلح المثال السابق. استخدم الشرطة المائلة العكسية لمنع Ruby من تفسير علامات الاقتباس المزدوجة الداخلية كرموز حرفية:

  • استخدام صيغة بديلة

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

ألقِ نظرة على المثال التالي:

هنا:

    • الرمز % يحدد الحرف التالي ( $، في هذه الحالة) كمحدد للسلسلة النصية.
    • السلسلة النصية الحرفية هنا هي $الـ سريع بني ثعلب قال, "لقد قفزت فوق الكلب الكسول"$.

دعنا نضع ذلك قيد التنفيذ:

هنا، يتم التعامل مع السلسلة النصية بشكل أساسي على النحو التالي:

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

كما أنه يعمل بشكل ممتاز مع إدراج السلاسل النصية:

من الشائع أيضاً استخدام %Q{} و %q{} لتعريف السلاسل النصية في برامج Ruby. هنا، %Q{} تعمل مثل علامات الاقتباس المزدوجة و %q{} تعمل مثل علامات الاقتباس الفردية.

الخطوة 7 – الأسطر الجديدة والسلاسل النصية الطويلة

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

ألقِ نظرة على المثال التالي:

تبدو السلسلة النصية الحرفية مربكة، أليس كذلك؟ دعنا نعد ترتيبها لتحسين قابليتها للقراءة:

بدلاً من الإعلان يدوياً عن أحرف السطر الجديد، يمكننا أيضاً استخدام الهيكل التالي:

Strings in Ruby 8

Strings in Ruby 9

في هذه الطريقة، تحافظ السلسلة النصية على جميع المسافات البيضاء. ومع ذلك، فإن هذا يشوه المخرجات. قم بإزالة المسافات البيضاء الإضافية لإصلاح ذلك:

Strings in Ruby 10

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

Strings in Ruby 11

Strings in Ruby 12

بدءاً من إصدار Ruby v2.3 وما فوق، تتوفر ميزة أخرى تسمى متعرج heredoc . وهي تزيل المسافات البيضاء البادئة في السلاسل النصية. للتعبير عن متعرج heredoc، استبدل الوصلة ( -) بعلامة المدة ( ~):

Strings in Ruby 13

الخطوة 8 – تكرار السلاسل النصية

في بعض الحالات، قد يكون من الضروري تكرار سلسلة نصية عدة مرات. تتيح لغة Ruby تكرار السلاسل النصية بطرق مختلفة.

إحدى هذه التقنيات هي استخدام * عامل. بشكل عام، يُستخدم كعامل الضرب عند التعامل مع الأرقام. أما عند التعامل مع السلاسل النصية، فإنه يصبح عامل تكرار السلاسل النصية، حيث يكرر السلسلة النصية الفردية عدد المرات المطلوب. يجب أن يكون عدد التكرارات عددًا صحيحًا.

في المثال التالي، سيتم تكرار النص Boris 5 مرات:

Strings in Ruby 14

باستخدام هذه الميزة، يمكننا إنتاج بعض رسومات ASCII الرائعة. تحقق من المثال التالي:

أفكار نهائية

تعتبر السلاسل النصية، في البرمجة، أمرًا جوهريًا. يوضح هذا الدليل كيفية التعامل مع السلاسل النصية في Ruby. لقد تعلمنا كيفية إنشاء السلاسل النصية وإجراء عمليات مختلفة مثل الدمج، والتعامل مع السطور الجديدة، وعلامات الاقتباس، وما إلى ذلك. باستخدام دمج السلاسل النصية (string interpolation)، تعلمنا أيضًا كيفية دمج قيم المتغيرات بشكل أفضل في السلاسل النصية. باستخدام عامل تكرار السلاسل النصية، يمكننا أيضًا تكرار سلسلة نصية واحدة عدة مرات.

بينما تعد Ruby، في حد ذاتها، لغة برمجة ممتازة، إلا أنها غالبًا ما تُدمج مع إطار عمل Rails. Ruby on Rails هو إطار عمل مفتوح المصدر لتطبيقات الويب. تعرف على المزيد حول تثبيت Ruby on Rails على Ubuntu. ومع ذلك، يمكن لـ Ruby أيضًا العمل مع تطبيقات أخرى، مثل MySQL و PostgreSQL.

حوسبة سعيدة!

author

Preslav Dobrev

المؤلف · CloudSigma

Preslav Dobrev هو مصمم إبداعي في CloudSigma، يركز على هوية أعمال متسقة باستخدام قنوات التسويق التقليدية والمبتكرة. هو بارع في دمج الرؤية الفنية مع التسويق الاستراتيجي لخلق سرد قصصي مؤثر للعلامة التجارية.

التعليقات

لا توجد تعليقات بعد. كن أول من يعلق.