Objective-C: unichar与char的区别

23

我对unichar和char有些困惑。我能否像char一样处理unichar?

例如,我能这样做吗:

-(BOOL)isNewLine:(unichar)c {

if(c == '\n')
  return YES;
else
  return NO;

}
3个回答

24

是的,unichar 在内部实际上是 unsigned short,因此您可以有意义地将其与 char 进行比较(如果后者是 ASCII,但对于 '\n' 也可以正常工作)。

注:unichar 是苹果操作系统中用于表示 Unicode 字符的数据类型。

6

注意检查换行符时,要了解您的行尾格式,因为Unix(和现代Mac)使用\n,但Windows使用\r\n,而经典Mac使用\r。


7
谢谢。我找到了一个名为NSCharacterSet的类,它有一个静态方法可以生成NSNewlineCharacterSet,我可以将其与之比较。 - LeeMobile

0

在比较unichars时,考虑改用以下方法:

if ([[NSCharacterSet newlineCharacterSet] characterIsMember:unicharCharacter])
{
    //any type of newline
}
else
{
    //etc
}

那么你将捕获所有类型的换行符,并且拥有可以轻松修改以匹配不同字符集(例如 whitespaceAndNewlineCharacterSet)的代码。

这就是使用 unichars 的巨大优势。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接