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'

%Cすべてをに変更することをお勧めしますが%d、それでは機能が壊れてしまいます。これを行う正しい方法は何ですか?Xcodeが間違ったことを推奨しているのはなぜですか?

4

2 に答える 2

7

1つのオプションは、引数をunsignedshortにキャストすることです(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 に答える