0Pricing
Swift Academy · 课时

字符计数与迭代

正确迭代包含表情符号和重音符号的文本。

字符计数与迭代 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。

计算字符数量

String 的 count 属性会返回 Character 值的数量,也就是用户感知到的字符数量。

let word = "Swift"
print(word.count)

计数反映可见字符

由于 Swift 按字素簇计数,accented 字母或 emoji 都会计为一个,这与读者看到的结果一致。

let cafe = "caf\u{e9}"
print(cafe.count)

正确计算 emoji 数量

单个 emoji 会计为一个字符,即使它在内部跨越多个 bytes 和标量。

let s = "Hi\u{1F600}"
print("Characters:", s.count)

复杂 emoji 仍计为一个

即使是家庭或 flag 这样的多标量 emoji,也会计为单个 Character,不同于简单地按字节或标量计数。

let flag = "\u{1F1FA}\u{1F1F8}"
print("Characters:", flag.count)
print("Scalars:", flag.unicodeScalars.count)

使用 for-in 迭代

对字符串使用 for-in 循环时,会按顺序访问其中的每个 Character,并正确跨过字素簇。

for ch in "a\u{1F600}b" {
    print(ch)
}

计算特定字符的数量

您可以将迭代与计数器结合使用,或者使用 filter,来计算某个特定字符出现的次数。

let text = "banana"
let aCount = text.filter { $0 == "a" }.count
print("a appears:", aCount)

检查是否为空

相比将 count 与零进行比较,优先使用 isEmpty;这样更清晰,而且可能更快。

let s = ""
print(s.isEmpty)
print("hello".isEmpty)

索引并非基于整数

由于字符的大小各不相同,Swift 字符串使用 String.Index,而不是整数下标。

let word = "Swift"
let first = word[word.startIndex]
print(first)

使用索引进行迭代

当您同时需要位置和字符时,可以使用 indices 进行迭代。

let word = "Hi"
for i in word.indices {
    print(word[i])
}

使用偏移量枚举

使用 enumerated(),可以在每个字符旁获取不断递增的整数偏移量。

for (i, ch) in "abc".enumerated() {
    print(i, ch)
}

正确计数为何重要

按字素簇计数意味着,对于国际文本和 emoji,长度检查、截断和验证都能符合直觉。

let name = "Jose\u{301}"
print("Visible length:", name.count)

快速检查

回顾 Swift 如何计算单个 emoji 的数量。

回顾:计算和迭代字符

您已了解到,count 会返回字素簇的数量,因此 emoji 和重音字符都计为一个;for-in 会正确迭代字符;字符串使用 String.Index 而不是整数;enumerated() 会提供偏移量。

let s = "ab\u{1F600}"
print("Count:", s.count)
for (i, ch) in s.enumerated() { print(i, ch) }

常见问题解答

「字符计数与迭代」课时是免费的吗?

是的 — 「字符计数与迭代」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。

「字符计数与迭代」这节课中我会学到什么?

正确迭代包含表情符号和重音符号的文本。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Swift Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「字符计数与迭代」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Swift Academy 课中编写并运行代码吗?

能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 字符与字形簇
  2. Unicode 标量与代码点
  3. 字符计数与迭代
  4. 编码视图:utf8、utf16、unicodeScalars
← 返回 Swift Academy