Подтвердить что ты не робот

Получить описание персонажа Эможи

В каждом Emoji есть описание, которое вы можете увидеть в Mac OS ⌃⌘Space специальный подборщик символов. Здесь список из них здесь. Есть ли способ для меня запросить это описание в коде (не вводя все их в Struct)?

Я хотел бы сделать что-то вроде:

let 😄: Character = "😄"
let 😄desc: String = 😄.description

и 😄desc разрешить "SMILING FACE WITH OPEN MOUTH AND SMILING EYES".

4b9b3361

Ответ 1

Функция Core Foundation CFStringTransform() имеет преобразования, которые определить стандартное имя Unicode для специальных символов. Пример:

let c : Character = "😄"

let cfstr = NSMutableString(string: String(c)) as CFMutableString
var range = CFRangeMake(0, CFStringGetLength(cfstr))
CFStringTransform(cfstr, &range, kCFStringTransformToUnicodeName, false)
print(cfstr)

Вывод:

\N{SMILING FACE WITH OPEN MOUTH AND SMILING EYES}

См. http://nshipster.com/cfstringtransform/ для получения дополнительной информации о CFStringTransform().

Ответ 2

Мартин R ответ с использованием Core Foundation CFStringTransform() по-прежнему работает, но ключевая функция на самом деле происходит от kCFStringTransformToUnicodeName, а в Swift 2 мы можем использовать его просто как это, путем соединения с помощью NSString и вызова stringByApplyingTransform:

let c: Character = "😄"
if let result = (String(c) as NSString)
    .stringByApplyingTransform(
        String(kCFStringTransformToUnicodeName),
        reverse: false) {
    print(result)
}

\n {СМОТРЕТЬ ЛИСТЬЮ С ОТКРЫТЫМ РЯДОМ И СМОТРЕТЬЮ ГЛАЗАМИ}

То же самое для строки:

let s: String = "This is a 😄"
if let result = (s as NSString)
    .stringByApplyingTransform(
        String(kCFStringTransformToUnicodeName),
        reverse: false) {
    print(result)
}

Это\N {СМОТРЕТЬ ЛИСТЬЯ С ОТКРЫТЫМ РИТОМ И СМОТРЕТЬЮ ГЛАЗАМИ}

Ответ 3

Свифт 3 версия Эрик Ая ответ:

let s = "This is a 😄"

if let result = s.applyingTransform(
    kCFStringTransformToUnicodeName as StringTransform,
    reverse: false) {
    print(result)
}

Это\N {СМОТРЕТЬ ЛИСТЬЯ С ОТКРЫТЫМ РИТОМ И СМОТРЕТЬЮ ГЛАЗАМИ}