Menu
CoddyTech

替换子字符串

本课属于 Coddy Swift 学习旅程的“逻辑与流程”单元。第 5 课,共 56 课。

replacingOccurrences(of:with:) 会返回一个新字符串,其中每个匹配的子字符串都会被另一个子字符串替换:

let phone = "555-123-4567"
let digits = phone.replacingOccurrences(of: "-", with: "")
print(digits)              // "5551234567"

和大小写转换方法一样,它会返回一个新的 String,原字符串不会改变。如果需要移除多个模式,可以链式调用:

let messy = "  555-123 4567  "
let clean = messy
    .replacingOccurrences(of: "-", with: "")
    .replacingOccurrences(of: " ", with: "")
print(clean)               // "5551234567"

两次替换意味着要遍历字符串两次。对于处理超长字符串且对性能敏感的代码,最好只遍历一次字符,使用 filter;日常开发中,链式替换也很合适,而且读起来清晰。

challenge icon

挑战

入门

读取一行输入。将其视为一个句子,并按以下步骤生成适合用作 URL 的slug:

  1. 将输入转换为小写
  2. 将每个空格替换为 -
  3. 删除所有 !、? 和 . 字符

打印生成的 slug。

对于输入 Hello World!,输出为 hello-world。对于 Is Swift Fun?,输出为 is-swift-fun。

亲手试试

let line = readLine()!

// TODO:转为小写字母,将空格替换为连字符,删除 ! ? . 字符
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Swift 在线编辑器