String має кілька методів, які допомагають працювати з рядками тексту (англ. string).
Ми викликаємо ці методи на самому рядку тексту, і часто поєднуємо їх у ланцюжки, щоб виконати кілька операцій над рядком.
Нижче наведено список деяких найпоширеніших методів.
Повний список методів наведено в документації API String.
Метод upcase повертає новий рядок тексту, у якому всі символи переведено у верхній регістр.
"hello".upcase
# => "HELLO"
Метод downcase повертає новий рядок тексту, у якому всі символи переведено у нижній регістр.
"HELLO".downcase
# => "hello"
У Crystal є методи для заміни частин рядка тексту.
Це sub (substitution, тобто заміна) і gsub (global substitution, тобто глобальна заміна).
Ці методи можуть приймати рядок тексту, символ або регулярний вираз як перший аргумент і рядок тексту або символ як другий аргумент.
Перший аргумент задає ту частину рядка тексту, яку буде замінено, а другий аргумент задає заміну.
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. ❤"
Зареєструйтеся на Exercism, щоб вивчати й опановувати Crystal, а також 26 концепцій142 вправи та справжнє наставництво від людей, і все це безкоштовно.