我对unichar和char有些困惑。我能否像char一样处理unichar?
例如,我能这样做吗:
-(BOOL)isNewLine:(unichar)c {
if(c == '\n')
return YES;
else
return NO;
}
我对unichar和char有些困惑。我能否像char一样处理unichar?
例如,我能这样做吗:
-(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 的巨大优势。