Unicode标量、Emoji序列与字符串区域索引:Swift String的内部秘密
深入Swift String的Unicode可扩展字素群集(Extended Grapheme Clusters),讨论Emoji合成、区域设定索引、UTF-8/16视图及性能优化。 · 难度:入门 · +10XP
Unicode标量、Emoji序列与字符串区域索引:Swift String的内部秘密
Swift String不是简单的字符数组。本教程将带领你探索字符串的四种视图:character(字素集群)、unicodeScalars、utf16、utf8。你会学到Emoji(如🏳️🌈和👨👩👧)为何占用多个码点,如何在安全范围内根据区域(如en_US)进行字符串比较和排序,以及如何通过游标(Index)高效截取而不产生崩溃。
let familyEmoji = "👨👩👧"
print(familyEmoji.count) // 1 (字素集群数)
print(familyEmoji.unicodeScalars.count) // 4 (实际Unicode标量)
for scalar in familyEmoji.unicodeScalars {
print(scalar.value, terminator: " ") // 128104 8205 128105 8205 128103
}
// 区域敏感排序
let strings = ["café", "cafe", "cafè"]
let sorted = strings.sorted(using: .localized)
print(sorted) // cafe, cafè, café