Ответ 1
Да, unichar внутренне unsigned short
, поэтому вы можете осмысленно сравнить его с char
(если последний является ASCII, но отлично подходит для '\n'
).
Я немного запутался между unichar и char. Можно ли рассматривать unichar, аналогичный char 's?
Например, могу ли я сделать это:
-(BOOL)isNewLine:(unichar)c {
if(c == '\n')
return YES;
else
return NO;
}
Да, unichar внутренне unsigned short
, поэтому вы можете осмысленно сравнить его с char
(если последний является ASCII, но отлично подходит для '\n'
).
Соблюдайте осторожность при проверке новой строки, в которой вы знаете формат окончаний вашей строки, поскольку Unix (и современный Mac) использует \n, но Windows использует \r\n, а классический Mac использует\r.
При сравнении unichars используйте вместо этого:
if ([[NSCharacterSet newlineCharacterSet] characterIsMember:unicharCharacter])
{
//any type of newline
}
else
{
//etc
}
Затем вы поймаете все типы новых строк и получите код, который вы можете легко изменить, чтобы соответствовать различным наборам символов (например, whitespaceAndNewlineCharacterSet).
Это большой потенциал с unichars.