Сравнение символов Unicode Objective C
Как кодируются кодировки в Юникоде? Мне нужно протестировать точно так, как показано ниже, проверяя конкретные буквы в строке. Код ниже дросселей: предупреждение: сравнение между указателем и целым числом
for (charIndex = 0; charIndex < [myString length]; charIndex++)
{
unichar testChar = [myString characterAtIndex:charIndex];
if (testChar == "A")
// do something
if (testChar == "B")
// do something
if (testChar == "C")
// do something
}
Ответы
Ответ 1
Для литералов char используйте одинарные кавычки:
if (testChar == 'A') NSLog(@"It an A");
Или представить символ, используя номер кодовой точки:
if (testChar == 0x1e01) NSLog(@"It an A with a ring below");
Компилятор видит двойные кавычки как строку, поэтому строит "А" как эквивалент const char *
(который дает вам сообщение об ошибке об указателе).
Ответ 2
Что вы действительно пытаетесь сделать? Выполнение прямых сравнений символов необычно. Обычно -compare: или -isEqual: используется для сравнения двух строк. Или NSScanner будет использоваться для анализа компонентов строки.