Skip to content

Instantly share code, notes, and snippets.

@cwalo
Created October 4, 2017 00:49
Show Gist options
  • Save cwalo/dc54be3ae74020e91ca4b8bbf037b47e to your computer and use it in GitHub Desktop.
Save cwalo/dc54be3ae74020e91ca4b8bbf037b47e to your computer and use it in GitHub Desktop.
String+Emoji
import Foundation
extension String {
var containsEmoji: Bool {
for scalar in unicodeScalars {
switch scalar.value {
case 0x1F600...0x1F64F, // Emoticons
0x1F300...0x1F5FF, // Misc Symbols and Pictographs
0x1F680...0x1F6FF, // Transport and Map
0x1F900...0x1F9FF, //idk but here lies clown and others
0x2600...0x26FF, // Misc symbols
0x2700...0x27BF, // Dingbats
0xFE00...0xFE0F: // Variation Selectors
return true
default:
continue
}
}
return false
}
var allEmoji: Bool {
for char in self.characters {
let s = String(char)
if !s.containsEmoji {
return false
}
}
return true
}
var composedCount: Int {
var count = 0
enumerateSubstrings(in: startIndex..<endIndex, options: .byComposedCharacterSequences) { (_, _, _, _) in
count += 1
}
return count
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment