轨道
/
Elixir
Elixir
/
练习
/
高中恋人
高中恋人

高中恋人

学习练习

简介

字符串

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.  |
❤-------------------❤

1. 获取名字的首字母

实现HighSchoolSweetheart.first_letter/1函数。它接收一个名字,并返回它的首字母。还要清理掉名字中多余的空白字符。

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

2. 把首字母格式化为缩写

实现HighSchoolSweetheart.initial/1函数。它接收一个名字,返回它的大写首字母,后面跟一个点。记得复用你在上一步中定义的HighSchoolSweetheart.first_letter/1。

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

3. 把全名拆分成名和姓

实现HighSchoolSweetheart.initials/1函数。它接收一个全名(由名和姓组成,中间用一个空格隔开),返回姓名缩写。记得复用你在上一步中定义的HighSchoolSweetheart.initial/1。

HighSchoolSweetheart.initials("Lance Green")
# => "L. G."

4. 把缩写放进 ASCII 方框里

实现HighSchoolSweetheart.pair/2函数。它接收两个全名,返回装在 ASCII 方框里的姓名缩写。你不需要自己画方框,直接使用代码注释里给出的那个方框就行。记得复用你在上一步中定义的HighSchoolSweetheart.initials/1。

HighSchoolSweetheart.pair("Blake Miller", "Riley Lewis")
# => """
# ❤-------------------❤
# |  B. M.  +  R. L.  |
# ❤-------------------❤
# """
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Elixir Exercism

准备好开始 高中恋人 了吗?

注册 Exercism,借助 58 个概念168 个练习 和真人导师指导,学习并掌握 Elixir,全部免费。