使用 Swift 5,您可以遍历标志表情符号字符的 unicodeScalars 属性,以打印组成它的 Unicode 标量值:
let emoji: Character = "??"
for scalar in emoji.unicodeScalars {
print(scalar)
}
/*
prints:
?
?
*/
如果你结合这些标量(即区域指示符号),你会得到一个标志表情符号:
let italianFlag = "?" + "?"
print(italianFlag) // prints: ??
print(italianFlag.count) // prints: 1
每个Unicode.Scalar 实例还有一个属性value,您可以使用它来显示它的数字表示:
let emoji: Character = "??"
for scalar in emoji.unicodeScalars {
print(scalar.value)
}
/*
prints:
127470
127481
*/
您可以从这些数字表示创建 Unicode 标量,然后将它们关联到一个字符串中:
let scalar1 = Unicode.Scalar(127470)
let scalar2 = Unicode.Scalar(127481)
let italianFlag = String(scalar1!) + String(scalar2!)
print(italianFlag) // prints: ??
print(italianFlag.count) // prints: 1
如果需要,您可以使用Unicode.Scalar 的escaped(asASCII:) 方法来显示Unicode 标量的字符串表示(使用ASCII 字符):
let emoji: Character = "??"
for scalar in emoji.unicodeScalars {
print(scalar.escaped(asASCII: true))
}
/*
prints:
\u{0001F1EE}
\u{0001F1F9}
*/
let italianFlag = "\u{0001F1EE}\u{0001F1F9}"
print(italianFlag) // prints: ??
print(italianFlag.count) // prints: 1
String 的init(_:radix:uppercase:) 也可能与将标量值转换为十六进制值有关:
let emoji: Character = "??"
for scalar in emoji.unicodeScalars {
print(String(scalar.value, radix: 16, uppercase: true))
}
/*
prints:
1F1EE
1F1F9
*/
let italianFlag = "\u{1F1EE}\u{1F1F9}"
print(italianFlag) // prints: ??
print(italianFlag.count) // prints: 1