Swift5 - emoji表情与UInt64数字或字符串转换

最近做项目的时候需要处理emoji表情,网上搜索的代码版本是是比较早期的版本,并不能直接在Swift5的环境下使用,由于iOS13以后苹果官方弃用了UInt32类型的转换,参考了网上的代码案例自己琢磨写了一个可行的转换方法。

代码如下:

/// test emoji(with: "0x1f603") -> "😃"
func emoji(with code: String) -> String {
    let scanner = Scanner(string: code)
    var result: UInt64 = 0
    scanner.scanHexInt64(&result)
    // 强转类型有风险,所以用取巧的方式将UInt64转为Int类型,由于取值是负,将使用绝对值
    // 如果是使用 0x123456 之类的十六进制数字类型,可直接进入下面的步骤
    let res = abs(result.distance(to: 0))
    if let unicode = Unicode.Scalar(res) {
        let character = Character(unicode)
        // 也可以使用String(character)
        return "\(character)"
    }
    return code
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容