为什么方法 isEmojiPresentation 返回 false?
"🫥".unicodeScalars.first?.properties.isEmoji //可选(false)
"🫥".unicodeScalars.first?.properties.isEmojiPresentation //可选(false)
文档
isEmoji - https://developer.apple.com/documentation/swift/unicode/scalar/properties-swift.struct/isemoji
isEmojiPresentation - https://developer.apple.com/documentation/swift/unicode/scalar/properties-swift.struct/isemojipresentation
UDP:
最佳答案
来自isEmoji documentation你发布了:
testing isEmoji alone on a single scalar is insufficient to determine if a unit of text is rendered as an emoji; a correct test requires inspecting multiple scalars in a Character.
因此,您可以使用以下代码来检查是否有表情符号呈现:
"🫥".unicodeScalars.contains(where: { $0.properties.isEmoji }) // true
"5".unicodeScalars.contains(where: { $0.properties.isEmoji }) // true, as expected (5️⃣)
"a".unicodeScalars.contains(where: { $0.properties.isEmoji }) // false
此代码用于检查默认情况下是否为表情符号呈现:
"🫥".unicodeScalars.contains(where: { $0.properties.isEmojiPresentation }) // true
"5".unicodeScalars.contains(where: { $0.properties.isEmojiPresentation }) // false
"a".unicodeScalars.contains(where: { $0.properties.isEmojiPresentation }) // false
这里是为方便起见的扩展:
extension Character {
var hasEmojiPresentation: Bool {
unicodeScalars.contains(where: { $0.properties.isEmoji })
}
var hasEmojiPresentationAsDefault: Bool {
unicodeScalars.contains(where: { $0.properties.isEmojiPresentation })
}
}
用法:
Character("🫥").hasEmojiPresentation // true
Character("🫥").hasEmojiPresentationAsDefault // true
Character("5").hasEmojiPresentation // true
Character("5").hasEmojiPresentationAsDefault // false
Character("a").hasEmojiPresentation // false
Character("a").hasEmojiPresentationAsDefault // false
注意:结果可能因使用的 Xcode 版本而异,因为它们包含不同的表情符号集。
关于swift - 🫥 Swift isEmoji isEmojiPresentation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72801224/