一尘不染

如何在不使用任何形式的查找表的情况下列出(几乎)iOS 8 Swift中的所有表情符号?

swift

我正在使用Xcode Playground在Swift中使用表情符号处理一些简单的iOS8应用程序。为此,我想创建类似于Unicode
/表情符号地图/说明的内容。

为了做到这一点,我需要有一个循环,使我可以打印出表情符号列表。我在想些类似的事情

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创建一个查找表,但我希望采用一种懒惰/简单的方法来实现。


阅读 239

收藏
2020-07-07

共1个答案

一尘不染

你也可以遍历这些十六进制值有Range0x1F601...0x1F64F,然后创建StringS使用UnicodeScalar

for i in 0x1F601...0x1F64F {
    var c = String(UnicodeScalar(i))
    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 {
        var c = String(UnicodeScalar(i))
        print(c)
    }
}
2020-07-07