2

我有一个扫描字符串的方法,将任何新行转换<br>为 HTML。有问题的行是:

NSCharacterSet *newLineCharacters = [NSCharacterSet characterSetWithCharactersInString:
          [NSString stringWithFormat:@"\n\r%C%C%C%C", 0x0085, 0x000C, 0x2028, 0x2029]];

Xcode 在这里给我一个警告:

Format specifies type 'unsigned short' but the argument has type 'int'

建议我将 all 更改%C%d,但事实证明这会破坏该功能。这样做的正确方法是什么,为什么 Xcode 会推荐错误的方法?

4

2 回答 2

7

一种选择是将您的论点转换为无符号短:即(unsigned short)0x0085

但是如果你正在寻找换行符,你应该只使用换行符字符集。这是“符合 Unicode 的”:[ NSCharacterSet newlineCharacterSet ]

编辑

重新审视这个问题:如果您尝试通过换行符分隔 NSString/CFString,您可能应该使用-[ NSString getLineStart:end:contentsEnd:forRange:].

于 2012-08-24T23:04:41.267 回答
2

正如@nielsbot 所建议的那样,使用罐装字符集绝对是当有一个符合您应用程序需求的字符集时要走的路。

但就在其中编写带有 Unicode 代码点的字符串文字而言,您不需要-stringWithFormat:,您可以只使用 Unicode 转义:

NSCharacterSet *aCharSet = [NSCharacterSet
  characterSetWithCharactersInString:@"\u2704\u2710\u2764"];
于 2012-08-24T23:31:21.563 回答