轨道
/
Go
Go
/
练习
/
欢迎来到科技宫!
欢迎来到科技宫!

欢迎来到科技宫!

学习练习

简介

Go 中的string是不可变的字节序列,其中的字节不一定表示字符。

字符串字面量定义在双引号之间:

const name = "Jane"

可以使用+运算符拼接字符串:

"Jane" + " " + "Austen"
// => "Jane Austen"

有些特殊字符需要用前导反斜杠转义,比如字符串中的\t表示制表符,\n表示换行符。

"How is the weather today?\nIt's sunny"  
// =>
// How is the weather today?
// It's sunny

strings包中包含许多处理字符串的实用函数。 想了解更多关于字符串函数的信息,请查看 strings 包文档。 下面是一些例子:

import "strings"

// strings.ToLower returns the string given as argument with all its characters lowercased
strings.ToLower("MaKEmeLoweRCase")
// => "makemelowercase"

// strings.Repeat returns a string with a substring given as argument repeated many times
strings.Repeat("Go", 3)
// => "GoGoGo"

说明

附近有一家叫“Tech Palace”的电器商店。 店主最近安装了一块大显示屏,用来播放营销消息,并在顾客在入口处扫描会员卡时显示一句特别问候。 这块显示屏由许多小 LED 灯组成,可以显示多行文字。

店主需要你帮忙编写用来为新显示屏生成文字的代码。

1. 创建欢迎消息

对于大多数扫描会员卡的顾客,店主希望在显示屏上看到"Welcome to the Tech Palace,",后面跟着顾客姓名的大写形式。

实现函数WelcomeMessage,它接受顾客姓名作为string实参,并返回所需的消息,类型为string。

WelcomeMessage("Judy")
// => Welcome to the Tech Palace, JUDY

2. 添加花哨的边框

对于在店里消费很多的忠实顾客,店主希望通过在欢迎消息前后各加一行星星,让欢迎消息的显示更花哨。 店主还不确定每行应该有多少颗星星,所以希望这个数量可以配置。

编写函数AddBorder,它接受一条欢迎消息(string)和每行星星的数量(类型int)作为实参。 它应返回一个string,由 3 行组成:一行包含所需数量的星星,接着是传入的欢迎消息,最后是另一行星星。

AddBorder("Welcome!", 10)

应返回以下内容:

**********
Welcome!
**********

3. 清理旧的营销消息

在安装这块新显示屏之前,店里有一块类似的显示屏,只能显示不可配置的静态文字行。 店主想在新显示屏上重复使用一些旧的营销消息。 不过,这些数据中已经包含了一圈星星边框和一些多余的空白字符。 你的任务是清理这些消息,让它们可以重新使用。

实现函数CleanUpMessage,它接受旧的营销消息作为字符串。 该函数应首先从文本中移除所有星星,然后从剩余的文本中移除开头和结尾的空白字符。 然后,该函数应返回清理后的消息。

message := `
**************************
*    BUY NOW, SAVE 10%   *
**************************
`

CleanUpMessage(message)
// => BUY NOW, SAVE 10%
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Go Exercism

准备好开始 欢迎来到科技宫! 了吗?

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