拆分与连接
本课属于 Coddy Swift 学习旅程的“逻辑与流程”单元。第 4 课,共 56 课。
处理分隔文本的两种常用工具。它们都来自已经导入的 Foundation。
components(separatedBy:) 会根据你传入的分隔符将字符串拆分成一个 String 数组:
let csv = "red,green,blue"
let parts = csv.components(separatedBy: ",")
print(parts) // ["red", "green", "blue"]对应的反向操作是对任意 [String] 使用 joined(separator:):
let words = ["swift", "is", "fun"]
let line = words.joined(separator: " ")
print(line) // "swift is fun"你经常会把这些操作组合起来:拆分,用 map 转换,再重新拼接。对 [String] 使用 map 的结果仍然是 [String],所以可以直接使用 joined。
挑战
简单读取一行输入:一个以逗号分隔的单词列表。
打印三行:
- 按
,拆分后的单词数量 - 将这些单词重新连接,并用
>(空格、大于号、空格)分隔,转换为大写 - 列表中最长的单词(拆分后)。如果两个单词长度相同,则使用先出现的那个。
对于输入 red,green,blue,输出为:
3
RED > GREEN > BLUE
green亲手试试
let line = readLine()!
let words = line.components(separatedBy: ",")
// TODO:输出单词数量、用 " > " 连接的大写单词,以及第一个最长的单词
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Swift 在线编辑器