تحتوي String على عدة طرق يمكن استخدامها للتعامل مع السلاسل النصية.
تُستدعى هذه الطرق على السلسلة النصية نفسها، وغالبًا ما تُربط معًا لتنفيذ عدة عمليات على السلسلة النصية.
فيما يلي قائمة ببعض الطرق الأكثر شيوعًا.
راجع توثيق String API للحصول على قائمة كاملة بالطرق.
تُرجع طريقة upcase سلسلة نصية جديدة بعد تحويل جميع أحرفها إلى أحرف كبيرة.
"hello".upcase
# => "HELLO"
تُرجع طريقة downcase سلسلة نصية جديدة بعد تحويل جميع أحرفها إلى أحرف صغيرة.
"HELLO".downcase
# => "hello"
توفّر Crystal طرقًا لاستبدال أجزاء من السلسلة النصية.
وتُعرف هذه الطرق بـ sub (الاستبدال) وgsub (الاستبدال الشامل).
يمكن لهذه الطرق أن تأخذ سلسلة نصية أو محرفًا أو تعبيرًا نمطيًا كوسيط أول، وسلسلة نصية أو محرفًا كوسيط ثانٍ.
الوسيط الأول هو الجزء من السلسلة النصية الذي سيُستبدل، والوسيط الثاني هو البديل.
سيُشرح Char والتعبير النمطي في مفاهيم لاحقة.
تستبدل طريقة sub أول ظهور للوسيط الأول بالوسيط الثاني.
"hello".sub("l", "r")
# => "herlo"
تعمل طريقة gsub مثل sub تمامًا، لكنها تستبدل جميع ظهورات الوسيط الأول بالوسيط الثاني.
"hello".gsub("l", "r")
# => "herro"
يمكن استخدام chomp وstrip لإزالة الأحرف غير المرغوبة من السلسلة النصية.
تُزيل طريقة chomp افتراضيًا آخر محرف من \r أو \n أو \r\n في نهاية السلسلة النصية.
وإذا استُدعيت الطريقة بوسيط، فستُزيل القيمة المعطاة من نهاية السلسلة النصية.
وذلك إن كانت القيمة موجودة فعلًا في نهاية السلسلة النصية.
"hello\n".chomp
# => "hello"
"hello".chomp("llo")
# => "he"
تُزيل طريقة strip افتراضيًا كل المسافات البيضاء من بداية السلسلة النصية ونهايتها.
وإذا استُدعيت الطريقة بوسيط، فستُزيل ذلك الوسيط من بداية السلسلة النصية ونهايتها.
وذلك إن كان الوسيط موجودًا فعلًا في بدايتها أو نهايتها.
" hello ".strip
# => "hello"
يمكن استخدام طريقة index لإيجاد فهرس محرف داخل سلسلة نصية.
تأخذ طريقة index سلسلة نصية أو Char أو تعبيرًا نمطيًا كوسيط.
ويمكنها أن تأخذ وسيطًا ثانيًا اختياريًا لتحديد الفهرس الذي يبدأ منه البحث.
وتُرجع طريقة index فهرس أول ظهور للوسيط.
"hello".index("l")
# => 2
"hello".index("l", 3)
# => 3
يمكنك استخدام طريقة delete_at لإزالة محرف من سلسلة نصية.
تأخذ طريقة delete_at فهرسًا كوسيط، وتُزيل المحرف الموجود عند ذلك الفهرس.
"hello".delete_at(0)
# => "ello"
"hello".delete_at(3)
# => "helo"
يمكن استخدام طريقة insert لإدراج سلسلة نصية عند فهرس محدد.
تأخذ طريقة insert فهرسًا كوسيط أول وسلسلة نصية كوسيط ثانٍ.
وتُرجع طريقة insert سلسلة نصية جديدة بعد إدراج الوسيط الثاني عند الفهرس.
"hello".insert(0, "h")
# => "hhello"
"hello".insert(3, "l")
# => "helllo"
في هذا التمرين، ستساعد حبيبَي المدرسة الثانوية على إعلان حبهما على وسائل التواصل الاجتماعي عبر توليد قلب بتنسيق ASCII يحمل الحرف الأول من اسميهما:
❤ J. + M. ❤
نفّذ طريقة HighSchoolSweetheart.clean_up_name.
يجب أن تستقبل اسمًا فتحذف منه جميع محارف - وتستبدلها بمسافة.
كما يجب أن تحذف أي مسافات بيضاء من بداية الاسم ونهايته.
HighSchoolSweetheart.clean_up_name("Jane-Ann")
# => "Jane Ann"
نفّذ طريقة HighSchoolSweetheart.first_letter.
يجب أن تستقبل اسمًا وتُرجع الحرف الأول منه.
احرص على إعادة استخدام HighSchoolSweetheart.clean_up_name التي عرّفتها في الخطوة السابقة.
HighSchoolSweetheart.first_letter("Jane")
# => "J"
نفّذ طريقة HighSchoolSweetheart.initial.
يجب أن تستقبل اسمًا وتُرجع الحرف الأول منه بحرف كبير متبوعًا بنقطة.
احرص على إعادة استخدام HighSchoolSweetheart.first_letter التي عرّفتها في الخطوة السابقة.
HighSchoolSweetheart.initial("Robert")
# => "R."
نفّذ طريقة HighSchoolSweetheart.pair.
يجب أن تستقبل اسمين وتُرجع الأحرف الأولى مع قلوب إيموجي حولها.
احرص على إعادة استخدام HighSchoolSweetheart.initial التي عرّفتها في الخطوة السابقة.
HighSchoolSweetheart.pair("Blake Miller", "Riley Lewis")
# => "❤ B. + R. ❤"
سجّل في Exercism لتتعلّم وتتقن Crystal عبر 26 مفهومًا142 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.