Рядки тексту (англ. string) в Elixir обмежуються подвійними лапками і кодуються в UTF-8:
"Hi!"
Рядки тексту можна зʼєднувати за допомогою оператора <>/2:
"Welcome to" <> " " <> "New York"
# => "Welcome to New York"
Рядки тексту в Elixir підтримують інтерполяцію за допомогою синтаксису #{}:
"6 * 7 = #{6 * 7}"
# => "6 * 7 = 42"
Щоб додати в рядок тексту символ нового рядка, використайте керуючу послідовність \n:
"1\n2\n3\n"
А щоб зручно працювати з текстами, у яких багато символів нового рядка, використайте натомість синтаксис heredoc із потрійними подвійними лапками:
"""
1
2
3
"""
Elixir надає багато функцій для роботи з рядками тексту в модулі String.
Оператор |> називається оператором конвеєра. Його можна використовувати, щоб обʼєднувати виклики функцій у ланцюжок так, що значення, повернене попереднім викликом функції, передається як перший аргумент наступному виклику функції.
"hello"
|> String.upcase()
|> Kernel.<>("?!")
# => "HELLO?!"
У цій вправі ми допоможемо закоханим старшокласникам освідчитися в коханні в соціальних мережах, згенерувавши ASCII-рамку з їхніми ініціалами:
❤-------------------❤
| J. K. + M. B. |
❤-------------------❤
Реалізуйте функцію HighSchoolSweetheart.first_letter/1. Вона приймає імʼя та повертає його першу літеру. Вона також має прибрати з імені всі зайві пробіли.
HighSchoolSweetheart.first_letter("Jane")
# => "J"
Реалізуйте функцію HighSchoolSweetheart.initial/1. Вона приймає імʼя та повертає його першу літеру у верхньому регістрі, після якої стоїть крапка. Обовʼязково використайте функцію HighSchoolSweetheart.first_letter/1, яку ми визначили на попередньому кроці.
HighSchoolSweetheart.initial("Robert")
# => "R."
Реалізуйте функцію HighSchoolSweetheart.initials/1. Вона приймає повне імʼя, що складається з імені та прізвища, розділених пробілом, і повертає ініціали. Обовʼязково використайте функцію HighSchoolSweetheart.initial/1, яку ми визначили на попередньому кроці.
HighSchoolSweetheart.initials("Lance Green")
# => "L. G."
Реалізуйте функцію HighSchoolSweetheart.pair/2. Вона приймає два повні імені та повертає ініціали всередині ASCII-рамки. Малювати рамку самостійно не потрібно, скористайтеся рамкою, наведеною в коментарі до коду. Обовʼязково використайте функцію HighSchoolSweetheart.initials/1, яку ми визначили на попередньому кроці.
HighSchoolSweetheart.pair("Blake Miller", "Riley Lewis")
# => """
# ❤-------------------❤
# | B. M. + R. L. |
# ❤-------------------❤
# """
Зареєструйтеся на Exercism, щоб вивчати й опановувати Elixir, а також 58 концепцій168 вправ та справжнє наставництво від людей, і все це безкоштовно.