Как мне избежать символа Unicode в моем исходном коде Objective C? - PullRequest
38 голосов
/ 07 мая 2009

Я чувствую себя невероятно глупо, когда спрашиваю об этом, но документация и Google не дают мне никакой любви.

У меня есть символ Unicode, который я хочу вставить в строковый литерал в исходном коде моего приложения для iPhone. Я знаю его шестнадцатеричное значение. Какую правильную escape-последовательность использовать? И в этом отношении, какой очевидный источник информации я пропускаю, который сказал бы мне это?

Ответы [ 5 ]

63 голосов
/ 07 мая 2009

Пример:

NSString *stuff = @"The Greek letter Beta looks like this: \u03b2, and the emoji for books looks like this: \U0001F4DA";
10 голосов
/ 07 мая 2009

Если вы не хотите помещать его непосредственно в строку, вы можете использовать спецификатор формата, например:

[string stringByAppendingFormat:@"%C", 0x2665];
3 голосов
/ 21 сентября 2015

Более современный подход:

Я не уверен, когда эта функция была добавлена ​​в язык, но по крайней мере с 2015 года Строковые литералы Objective-C могут содержать любой символ Unicode. Например, я отмечаю свои строки журнала с эмодзи, потому что их отличительные цвета - более легкий способ выбрать их:

message:@

Итак, если у вас есть символ, а не только кодовая точка, и вы хотите использовать его в статической строке, а не генерировать его динамически, это отличный подход, поскольку вы сразу знаете, какой символ вы используете глядя на это.

1 голос
/ 07 мая 2009

Правильная escape-последовательность была бы чем-то вроде

wchar_t * str = L"\x0627";

См. Этот вопрос: символьная константа: \ 000 \ xhh

Редактировать: Ой, прости, я пропустил тэги iPhone и Objective-C. Вышесказанное действительно для общего C / C ++, но я не работал с разработкой для iPhone, поэтому ваш пробег может отличаться.

0 голосов
/ 08 июля 2014

\ является escape-символом в цели c, используйте его перед буквой, которую нужно экранировать, как:

NSString temp = @" hello \"temporary.h\" has been inported";

Здесь, если вы напечатаете временную строку в текстовом просмотре или журналах, вы также увидите, как печатается ", потому что мы использовали \ перед ними, который является escape-символом

...