String چندین «متد» دارد که با آنها میتوان رشتهها را دستکاری کرد.
این متدها روی خود رشته فراخوانی میشوند و اغلب بهصورت زنجیرهای پشت سر هم قرار میگیرند تا چند عملیات روی یک رشته انجام دهند.
در ادامه فهرستی از رایجترین متدها آمده است.
برای دیدن فهرست کامل متدها، مستندات API مربوط به String را ببینید.
متد 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 یک String، 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. ❤"