我已ç»�查阅了一些问题,比如è�·å�–å—符串的长度和为什么表情符å�·å¦‚👩â€�👩â€�👧â€�👦在Swiftå—符串ä¸è¢«å¦‚æ¤å¥‡æ€ªåœ°å¤„ç�†ï¼Ÿä½†è¿™ä¸¤ä¸ªé—®é¢˜éƒ½æ²¡æœ‰æ¶µç›–这个特定问题。
这一切始äº�å°�试å�‘表情符å�·åº”用肤色修改器(å�‚è§�以编程方å¼�å�‘表情符å�·æ·»åŠ 肤色修改器)。这引å�‘了对将肤色修改器应用äº�常规å—符(如
例如:
这一切始äº�å°�试å�‘表情符å�·åº”用肤色修改器(å�‚è§�以编程方å¼�å�‘表情符å�·æ·»åŠ 肤色修改器)。这引å�‘了对将肤色修改器应用äº�常规å—符(如
"A"
)会�生什么的疑问。例如:
let tonedThumbsUp = "" + "" //
let tonedA = "A" + "" // A
我正在尝试检测第二种情况。这两个字符串的 count
均为1。这两个字符串的 unicodeScalars.count
也均为2。
如何确定结果字符串在显示时是否呈现为单个字符?换句话说,如何确定是否应用了肤色修饰符以创建单个字符?
我已尝试了几种方法来转储字符串的信息,但没有得到期望的结果。
func dumpString(_ str: String) {
print("Raw:", str, str.count)
print("Scalars:", str.unicodeScalars, str.unicodeScalars.count)
print("UTF16:", str.utf16, str.utf16.count)
print("UTF8:", str.utf8, str.utf16.count)
print("Range:", str.startIndex, str.endIndex)
print("First/Last:", str.first == str.last, str.first, str.last)
}
dumpString("A")
dumpString("\u{1f469}\u{1f3fe}")
结果:
原始数据: A 1 标量值: A 2 UTF16编码: A 3 UTF8编码: A 3 第一/最后一个: true 可选("A") 可选("A") 原始数据: 1 标量值: 2 UTF16编码: 4 UTF8编码: 4 第一/最后一个: true 可选("") 可选("")
B
的上方。但现在在我的 iPad 上查看它(运行 iPadOS 13.0 beta 2),它们在B
和 Fitzpacktrick 修饰符之间水平分布。 - rob mayoff