从原始十六进制合成多字符表情符号

it1352
帮助22人
问题说明
我正在从服务器获得这样的JSON:
{
"unicode":"1f468-1f468-1f467-1f467"
}
我应该把它翻译成它的复合字符,以便显示和/或复制到粘贴板:👨👨👧👧
目前为止的解决方案来自SO question:
let u = json["unicode"] as? String
let dashless = u.characters.split{$0 == "-"}.map(String.init)
let charArray = dashless.map { char -> Character in
let code = Int(strtoul(char, nil, 16))
return Character(UnicodeScalar(code))
}
let unicode = String(charArray)
UIPasteboard.generalPasteboard().string = unicode
这对单字符表情符号定义非常有效。
例如,我可以用这个JSON…运行上面的代码
{
"unicode":"1f4a9"
}
…并粘贴预期结果:💩。但当我使用前面列出的mmgg
家庭表情符号时,我在iOS中得到了以下内容,不包括空格:👨👨👧👧。它们只是在粘贴到文本字段中时似乎不想合并。
这是iOS错误,还是我做错了什么?
正确答案
#1
在您的操场上试试,看看有什么不同...
"👨👨👧👧".unicodeScalars.forEach { (c) in
print(c.escape(asASCII: true),terminator: "")
}
print("")
"👨👨👧👧".unicodeScalars.forEach { (c) in
print(c.escape(asASCII: true), terminator: "")
}
/*
u{0001F468}u{0001F468}u{0001F467}u{0001F467}
u{0001F468}u{200D}u{0001F468}u{200D}u{0001F467}u{200D}u{0001F467}
*/
您的原始代码,稍作修改
import Darwin // stroul
let u = "1f468-1f468-1f467-1f467"
let dashless = u.characters.split{$0 == "-"}.map(String.init)
let emoji = dashless.map { char -> String in
let code = Int(strtoul(char, nil, 16))
return String(UnicodeScalar(code))
}.joinWithSeparator("u{200D}")
print(emoji) // 👨👨👧👧
纯SWIFT代码,无基础,无Stroul
let u = "1f468-1f468-1f467-1f467"
let emoji = u.characters.split("-")
.map {String(UnicodeScalar(Int(String($0),radix: 16) ?? 0))}
.joinWithSeparator("u{200D}")
print(emoji) // 👨👨👧👧
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通
- 本文地址: https://www.swvq.com/reply/detail/tanecee
- 联系方式: luke.wu#vfv.cc
- 来源链接: www.it1352.com/2904041.html
同类精品
更多
我要评论

-
在没有特定应用程序的情况下读取 NFC 标签?
it1352 08-02 -
点击自定义键盘按钮时播放铃声
it1352 09-18 -
Facebook 登录未在 Safari/iPhone 打开
it1352 07-25 -
Android App 和三星 Galaxy S4 不兼容
it1352 07-20 -
防止软件键盘弹出?
it1352 09-18 -
读取Magic Mouse和Apple Wireless Keyboard电池电量百分比
it1352 11-04 -
iPhone,一张图像叠加到另一张图像上以创建要保存的新图像?(水印)
it1352 07-17 -
发送电子邮件的SSIS脚本任务未正确显示数据
it1352 06-19 -
禁用 iPhone 键盘的方向
it1352 09-19 -
ORA-01830:日期格式图片在转换整个输入字符串:前结束/选择日期查询的总和
it1352 07-24