How to list (almost) all emojis in Swift for iOS 8 without using any form of lookup tables?
You can loop over those hex values with a Range
: 0x1F601...0x1F64F
and then create the String
s using a UnicodeScalar
:
for i in 0x1F601...0x1F64F {
guard let scalar = UnicodeScalar(i) else { continue }
let c = String(scalar)
print(c)
}
Outputs:
😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😑😒😓😔😕😖😗😘😙😚😛😜😝😞😟😠😡😢😣😤😥😦😧😨😩😪😫😬😭😮😯😰😱😲😳😴😵😶😷😸😹😺😻😼😽😾😿🙀🙁🙂🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏
If you want all the emoji, just add another loop over an array of ranges:
// 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)
}
}
For those asking, the full list of available emojis can be found here: https://www.unicode.org/emoji/charts/full-emoji-list.html
A parsable list of unicode sequences for all emojis can be found in the emoji-sequences.txt
file under the directory for the version you're interested in here: http://unicode.org/Public/emoji/
As of 9/15/2021 the latest version of the emoji standard available on Apple devices is 13.1.
Related videos on Youtube
Yogesh
Updated on September 15, 2022Comments
-
Yogesh over 1 year
I'm playing around with emojis in Swift using Xcode playground for some simple iOS8 apps. For this, I want to create something similar to a unicode/emoji map/description.
In order to do this, I need to have a loop that would allow me to print out a list of emojis. I was thinking of something along these lines
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 }
But the println() throws an error
Expected '}'in \u{...} escape sequence.
Is there a simple way to do this which I am missing?
I understand that not all entries will correspond to an emoji. Also, I'm able create a lookup table with reference from http://apps.timwhitlock.info/emoji/tables/unicode, but I would like a lazy/easy method of achieving the same.
-
Kametrixom over 8 yearsI recently wrote a gist available here which gets all standard unicode emojis from the website, parses them and prints them. Also it prints out all Country code emojis from AA to ZZ. I know you don't want to use networking for that but I guess somebody else could use this. Also you could modify it so that it creates a list of numbers of the emojis which can then be used offline
-
-
Craig Otis over 9 years+1 This is so much better than the weird
CFStringTransform
examples I was playing around with. -
Yogesh over 9 yearsGreat solution @Mike. This makes it so simple yet beautiful.
-
algal over 8 yearsThis is great. But where did you find those ranges for the unicode code points? Do these ranges cover all emoji? As of when?
-
Mike S over 8 years@algal I honestly don't remember where I dug those up, but I think I just used the link in the question and grabbed a few ranges from there. As the note in the code says though, that is definitely not a complete list of all the emoji; it's just there to show one way of looping over a set of ranges.
-
VDog about 7 yearsIf creating a custom keyboard, I'm assuming it isn't against any policies to use these emojis?
-
nodebase over 2 yearsI'm curious how you discovered this. How did you find out which hex values were emojis?