الصنف String
في روبي
السلاسل النصية (string) هي سلسلة تحتوي على حرف واحد أو أكثر وقد تحتوي على حروف أبجدية، مثل أرقام ورموز، ويكون كل حرف (أو رمز أو رقم) ممثلاً ببايت. السلاسل النصية في لغة البرمجة روبي عبارة عن كائنات (Objects)، وعلى عكس لغات البرمجة الأخرى، فإن النصوص قابلة للتغيير (Mutable) والتي تعني أننا نستطيع تعديل النصوص بدلًا من إنشاء نصوص جديدة.
علامتا الاقتباس المزدوجتين والمفردتين
يتم إنشاء السلاسل النصية (string) في لغة روبي باستعمال علامات الاقتباس المزدوجة (مثل "string"
) أو المفردة (مثل 'string'
).
يمكن مثلًا كتابة العبارة النصية Hello Ruby بالشكل “ Hello Ruby ” (علامتا تنصيص مزدوجتين) أو الشكل ‘ Hello Ruby ’ (علامتا تنصيص مفردتين). الفرق الوحيد بينهما هو أن الطريقة الأولى تتيح استيفاء النصوص (String Interpolation) وإدراج شيفرات برمجية في السلاسل النصية.
تهريب علامات الاقتباس
يتم تهريب علامات الاقتباس بوضع الخط المائل العكسي قبل علامة الاقتباس بالشكل التالي "\
:
“Sami said: \” Hello everyone \” “ #=> Sami said: “ Hello everyone “
استعمال المحددات
يمكن تعريف السلسلة النصية باستعمال المحددات، حيث توضع في البداية علامة النسبة المئوية (%)، ومن ثم توضع المحددات في بداية ونهاية السلسلة النصية، والمحددات هي رموز يختارها المبرمج، على سبيل المثال علامة $ وعلامة & وعلامة @، كذلك يمكن استعمال الأقواس المعقوفة ({ }) أو المُربعة ([ ]) كمحدد. إليك المثال التالي :
%$ Sami Says: “ Hello everyone “ $ #=> Sami Says: “ Hello everyone “
%{ Sami Says: “ Hello everyone “ } #=> Sami Says: “ Hello everyone “
%[ Sami Says: “ Hello everyone ” ] #=> Sami Says: “ Hello everyone “
واضح من المثال أنه أياً كان المحدد، فإن النتيجة سوف تبقى نفسها.
السلاسل النصية والمتغيرات
يمكن حفظ السلاسل النصية في متغيرات من أجل العودة إليها لاحقًا، إذ كل ما يجب فعله هو تعريف اسم المتغير وإعطاءه قيمة النص المرغوب تخزينه.
title = “Welcome To Ruby Documentation”
puts title #=> Welcome To Ruby Documentation
إدراج شيفرات برمجية في السلاسل النصية
يتم إدراج شيفرات برمجية في السلاسل النصية عن طريق وضعها ضمن أقواس معقوصة ({ }
) مسبوقة بعلامة #
ضمن السلسلة النصية نفسها.
name = “wikiHsoup”
puts “ My name is #{name} ” #=> My name is wikiHsoup
puts “ Sum is #{1+1} “ #=> Sum is 2
يجب الإشارة إلى أن إدراج الشيفرات البرمجية يعمل فقط مع السلاسل النصية المعرفة باستعمال علامتا التنصيص المزدوجتين والمحددات، ولا يعمل مع السلاسل النصية المعرفة باستخدام علامتا التنصيص المفردتين (' ').
name = “wikiHsoup”
puts ‘ My name is #{name} ‘ #=> My name is #{name}
ملاحظات
لمَّا كان هنالك بعض التعارضات في الأسماء البديلة، فيجب على من يستعل الصنف String أن يكون واعيًّا وحذرًا لكي تفرِّق بين التوابع التي تعدِّل محتوى السلسلة النصية الأصلية نفسها وبين التي تعدِّل المحتوى وتضعه في سلسلة نصية جديدة. عادةً، التوابع التي تنتهي بعلامة التعجب "!" هي التي تعدِّل السلسلة النصية الأصلية بينما تضع التوابع الأخرى المحتوى الذي عدلته في سلسلة نصية جديدة. على أي حال، هنالك استثناءات دومًا، لذا اقرأ التوثيق كل تابع بشكل جيد قبل استعماله.