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