如何在不使用任何形式的查找表的情况下在 Swift for iOS 8 中列出(几乎)所有表情符号?
Posted
技术标签:
【中文标题】如何在不使用任何形式的查找表的情况下在 Swift for iOS 8 中列出(几乎)所有表情符号?【英文标题】:How to list (almost) all emojis in Swift for iOS 8 without using any form of lookup tables? 【发布时间】:2014-10-02 22:51:47 【问题描述】:我在 Swift 中使用 Xcode Playground 来玩一些简单的 ios8 应用程序中的表情符号。为此,我想创建类似于 unicode/emoji 地图/描述的东西。
为了做到这一点,我需要有一个循环,可以让我打印出表情符号列表。我正在考虑这些方面的事情
for i in 0x1F601 - 0x1F64F
var hex = String(format:"%2X", i)
println("\u\(hex)") //Is there another way to create UTF8 string corresponding to emoji
但是 println() 会抛出错误
Expected ''in \u... escape sequence.
有没有我想念的简单方法?
我了解并非所有条目都对应表情符号。另外,我可以参考http://apps.timwhitlock.info/emoji/tables/unicode 创建一个查找表,但我想要一个懒惰/简单的方法来实现相同的目标。
【问题讨论】:
我最近写了一个可用的 gist here,它从网站上获取所有标准的 unicode 表情符号,解析它们并打印它们。它还打印出从 AA 到 ZZ 的所有国家代码表情符号。我知道您不想为此使用网络,但我想其他人可以使用它。你也可以修改它,以便它创建一个表情符号的数字列表,然后可以离线使用 查看这个答案***.com/a/60565823/5251783 【参考方案1】:您可以使用Range
:0x1F601...0x1F64F
循环这些十六进制值,然后使用UnicodeScalar
创建String
s:
for i in 0x1F601...0x1F64F
guard let scalar = UnicodeScalar(i) else continue
let c = String(scalar)
print(c)
输出:
??????????????????????????????????????????????? ????????????????????????????????
如果你想要所有的表情符号,只需在一个范围数组上添加另一个循环:
// NOTE: These ranges are still just a subset of all the emoji characters;
// they seem to be all over the place...
let emojiRanges = [
0x1F601...0x1F64F,
0x2702...0x27B0,
0x1F680...0x1F6C0,
0x1F170...0x1F251
]
for range in emojiRanges
for i in range
guard let scalar = UnicodeScalar(i) else continue
let c = String(scalar)
print(c)
对于那些询问的人,可以在此处找到可用表情符号的完整列表:https://www.unicode.org/emoji/charts/full-emoji-list.html
可以在您感兴趣的版本目录下的emoji-sequences.txt
文件中找到所有表情符号的可解析列表:http://unicode.org/Public/emoji/
截至 2021 年 9 月 15 日,Apple 设备上可用的表情符号标准的最新版本为 13.1。
【讨论】:
+1 这比我玩的那些奇怪的CFStringTransform
例子好多了。
很好的解决方案@Mike。这使它变得如此简单而美丽。
这很棒。但是,您在哪里找到了 unicode 代码点的这些范围?这些范围是否涵盖所有表情符号?什么时候?
@algal 老实说,我不记得我在哪里挖的,但我想我只是使用了问题中的链接并从那里抓取了一些范围。正如代码中的注释所说,这绝对是不是所有表情符号的完整列表;它只是为了展示一种在一组范围内循环的方式。
如果创建自定义键盘,我假设使用这些表情符号不违反任何政策?以上是关于如何在不使用任何形式的查找表的情况下在 Swift for iOS 8 中列出(几乎)所有表情符号?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 UIWebView 的情况下在 iOS 10 中显示带有 HTML 标签的文本(使用 swift)
如何在不使用 _id 字段但使用多个属性的情况下在 mongoose 中查找子文档