サーチ…


前書き

Format-SpecifierはObjective-Cでオブジェクト値を文字列に埋め込むために使用されます。

構文

  • %@ //文字列
  • %d //符号付き32ビット整数
  • %D //符号付き32ビット整数
  • %u //符号なし32ビット整数
  • %U //符号なし32ビット整数
  • %x //符号なし32ビット整数(小文字の16進数形式)
  • %X // 16進数の大文字の符号なし32ビット整数
  • %o // 8進形式の符号なし32ビット整数
  • %O // 8進形式の符号なし32ビット整数
  • %f // 64ビット浮動小数点数
  • %F // 10進表記で印刷された64ビット浮動小数点数
  • %e //小文字の科学記法形式の64ビット浮動小数点数
  • %E //大文字の科学記法形式の64ビット浮動小数点数
  • %g // 4つ以下のsig-figsが利用可能な場合は%fを使用する特殊なケース%e、そうでない場合は%e
  • %G // 4つ以下のsig-figsが利用可能な場合は%fを使用する特殊なケース%E、そうでない場合は%E
  • %c // 8ビットの符号なし文字
  • %C // 16ビットUTF-16コードユニット
  • %s // UTF8文字列
  • %S //%sの16ビット版
  • %p //小文字の16進数形式で先頭に '0x'を付けたVoidポインタ
  • %zx //先行する '0x'を取り除く特別な場合%p(型なしのキャストで使用)
  • %a //指数を表記するために 'p'を使用して小数点の前に1つの16進数と先頭の '0x'を持つ科学記法の64ビット浮動小数点数。
  • %A // 64進浮動小数点数の64進浮動小数点数を指数で表記するには '0x'を、小数点の前には1つの16進数を 'P'で指定します。

備考

書式指定子の性質上、パーセント記号(%)を文字列に含める場合は、2番目のパーセント記号を使用してエスケープする必要があります。

例:

int progress = 45;//percent
NSString *progressString = [NSString stringWithFormat:@"Progress: %i%%", (int)progress];

NSLog(progressString);//logs "Progress: 45%"

BOOL型の書式指定子がありません。

一般的なソリューションには次のものがあります。

BOOL myBool = YES;
NSString *boolState = [NSString stringWithFormat:@"BOOL state: %@", myBool?@"true":@"false"];

NSLog(boolState);//logs "true"

これは、文字列に相当するものをキャストするための三項演算子を利用しています。

BOOL myBool = YES;
NSString *boolState = [NSString stringWithFormat:@"BOOL state: %i", myBool];

NSLog(boolState);//logs "1" (binary)

バイナリ相当物を移植するための(int)キャストを利用しています。

整数の例 - %i

int highScore = 57;
NSString *scoreBoard = [NSString stringWithFormat:@"HighScore: %i", (int)highScore];

NSLog(scoreBoard);//logs "HighScore: 57"


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow