Треки
/
Crystal
Crystal
/
Вправи
/
Шкільне кохання
Шкільне кохання

Шкільне кохання

Навчальна вправа

Вступ

String має кілька методів, які допомагають працювати з рядками тексту (англ. string). Ми викликаємо ці методи на самому рядку тексту, і часто поєднуємо їх у ланцюжки, щоб виконати кілька операцій над рядком.

Нижче наведено список деяких найпоширеніших методів. Повний список методів наведено в документації API String.

String#upcase & String#downcase

Метод upcase повертає новий рядок тексту, у якому всі символи переведено у верхній регістр.

"hello".upcase
# => "HELLO"

Метод downcase повертає новий рядок тексту, у якому всі символи переведено у нижній регістр.

"HELLO".downcase
# => "hello"

String#sub & String#gsub

У Crystal є методи для заміни частин рядка тексту. Це sub (substitution, тобто заміна) і gsub (global substitution, тобто глобальна заміна).

Ці методи можуть приймати рядок тексту, символ або регулярний вираз як перший аргумент і рядок тексту або символ як другий аргумент. Перший аргумент задає ту частину рядка тексту, яку буде замінено, а другий аргумент задає заміну. Char і регулярні вирази пояснимо в наступних концепціях.

Метод sub замінює перше входження першого аргументу на другий аргумент.

"hello".sub("l", "r")
# => "herlo"

Метод gsub працює так само, як sub, але замінює всі входження першого аргументу на другий аргумент.

"hello".gsub("l", "r")
# => "herro"

String#chomp & String#strip

Методи chomp і strip можна використовувати, щоб прибрати зайві символи з рядка тексту.

За типової поведінки метод chomp прибирає останні символи \r, \n або \r\n з рядка тексту. Якщо метод викликати з аргументом, він прибере вказане значення з кінця рядка тексту (якщо воно там є).

"hello\n".chomp
# => "hello"

"hello".chomp("llo")
# => "he"

За типової поведінки метод strip прибирає всі пробільні символи на початку та в кінці рядка тексту. Якщо метод викликати з аргументом, він прибере цей аргумент на початку та в кінці рядка тексту (якщо він там є).

" hello ".strip
# => "hello"

String#index

Метод index можна використати, щоб знайти індекс символу в рядку тексту. Метод index приймає String, Char або регулярний вираз як аргумент. Він може приймати необовʼязковий другий аргумент, який задає індекс, від якого починати пошук. Метод index повертає індекс першого входження аргументу.

"hello".index("l")
# => 2

"hello".index("l", 3)
# => 3

String#delete_at

Метод delete_at можна використати, щоб прибрати символ із рядка тексту. Метод delete_at приймає індекс як аргумент і прибирає символ за цим індексом.

"hello".delete_at(0)
# => "ello"

"hello".delete_at(3)
# => "helo"

String#insert

Метод insert можна використати, щоб вставити рядок тексту за конкретним індексом. Метод insert приймає індекс як перший аргумент і рядок тексту як другий аргумент. Метод insert повертає новий рядок тексту з другим аргументом, вставленим за цим індексом.

"hello".insert(0, "h")
# => "hhello"

"hello".insert(3, "l")
# => "helllo"

Вказівки

У цій вправі ми допоможемо закоханим старшокласникам освідчитися в коханні в соціальних мережах, згенерувавши ASCII-серце з їхніми ініціалами:

❤ J.  +  M. ❤

1. Очистьте імʼя

Реалізуйте метод HighSchoolSweetheart.clean_up_name. Він має приймати імʼя, видаляти з нього всі символи - та замінювати їх на пробіл. Також він має видаляти будь-які пробільні символи на початку та в кінці імені.

HighSchoolSweetheart.clean_up_name("Jane-Ann")
# => "Jane Ann"

2. Отримайте першу літеру імені

Реалізуйте метод HighSchoolSweetheart.first_letter. Він має приймати імʼя та повертати його першу літеру. Обовʼязково використайте HighSchoolSweetheart.clean_up_name із попереднього кроку.

HighSchoolSweetheart.first_letter("Jane")
# => "J"

3. Відформатуйте першу літеру як ініціал

Реалізуйте метод HighSchoolSweetheart.initial. Він має приймати імʼя та повертати його першу літеру у верхньому регістрі, після якої йде крапка. Обовʼязково використайте HighSchoolSweetheart.first_letter із попереднього кроку.

HighSchoolSweetheart.initial("Robert")
# => "R."

4. Розмістіть ініціали всередині серця

Реалізуйте метод HighSchoolSweetheart.pair. Він має приймати два імені та повертати ініціали, оточені емодзі-серцями. Обовʼязково використайте HighSchoolSweetheart.initial із попереднього кроку.

HighSchoolSweetheart.pair("Blake Miller", "Riley Lewis")
# => "❤ B.  +  R. ❤"
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Crystal Exercism

Час розпочати Шкільне кохання?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Crystal, а також 26 концепцій142 вправи та справжнє наставництво від людей, і все це безкоштовно.