3

NSStringかなりユニコードフレンドリーです。したがって、通常、ユニコードを含む文字列を作成する場合は、次のように文字列リテラルに直接ポップできます。

NSString *myString = @"Press ⌘Q to quit…";

しかし、それは行区切り記号 (別名: <code>NSLineSeparatorCharacter、Unicode U+2028、UTF-8 E2 80 A8) を使用すると機能しません。コンパイラはこれを (正しく) 改行として解釈しますが、これは C 構文では禁止されています。

-stringWithFormat:どちらも役に立ちません。しようとしている

NSString *myString = [NSString stringWithFormat@"This is%don two lines…", NSLineSeparatorCharacter];

「This is8232on two lines…」という文字列が表示されます。

4

1 に答える 1

5

-stringWithFormat:進むべき正しい方法であることが判明しました。%Cの代わりに代用として使用する必要があり%dます。NSLineSeparatorCharacterは列挙型 (したがって、整数型) であるため、コンパイラは%dを使用する必要があると考えます。しかし、タイプ%Cを挿入するCocoaの方法です。unicharちょっとしたキャストで…

NSLog(@"This is%Con two lines…", (unichar)NSLineSeparatorCharacter);

魔法のように動作します!

以下の Ken のコメントにも注意してください。エスケープ シーケンスを使用して文字列リテラルに直接文字を埋め込むことができます。

@"This is\u2028on two lines…"
于 2012-07-08T16:46:17.737 に答える