gpt4 book ai didi

ios - 如何从原始十六进制组成多字符表情符号

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:38:46 24 4
gpt4 key购买 nike

我正在从服务器获取这样的 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 错误,还是我做错了什么?

最佳答案

在你的 Playground 上试试这个,看看有什么不同......

"👨👨👧👧".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 代码,没有基础,没有 strtoul

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) // 👨‍👨‍👧‍👧

关于ios - 如何从原始十六进制组成多字符表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36216598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com