0

私は他の誰かのコードを読んでいて、%@-1 を使用して整数をフォーマットしています。シンボルを無視するため、Google で何も見つかりません。私よりも文字列の書式設定の経験が豊富な人はいますか?

[NSString stringWithFormat:@"%@-1", subnumber]

ありがとう!

4

3 に答える 3

6

仕様によると:

各変換仕様は、'%' 文字または文字シーケンス "%n$" によって導入され、その後に次の文字が順番に表示されます。

  • 変換指定の意味を変更する 0 個以上のフラグ (任意の順序)。

  • オプションの最小フィールド幅。変換された値のバイト数がフィールド幅よりも少ない場合、デフォルトで左側にスペースが埋め込まれます。後述の左調整フラグ (「-」) がフィールド幅に指定されている場合は、右側がパディングされます。フィールド幅は、以下で説明するアスタリスク ( '*' )、または 10 進整数の形式を取ります。

  • d、i、o、u、x、および X 変換指定子に表示される最小桁数を指定するオプションの精度。a、A、e、E、f、および F 変換指定子の基数文字の後に表示される桁数。g および G 変換指定子の最大有効桁数。または、s [XSI] [Option Start] および S [Option End] 変換指定子の文字列から出力される最大バイト数。精度は、ピリオド ( '.' ) の後にアスタリスク ( '*' ) (後述) が続く形式か、オプションの 10 進数文字列 (ヌル数字文字列はゼロとして扱われる) のいずれかの形式を取ります。精度が他の変換指定子と共に表示される場合、動作は未定義です。

  • 引数のサイズを指定するオプションの長さ修飾子。

  • 適用する変換のタイプを示す変換指定子文字。

ここにはドル記号がないため、最初のタイプの変換を使用しています。上記のリストの一番上にある順番の単語に注意してください。は@変換指定子文字 (ここで説明) であり、渡された値にアクセスしてそのプロパティNSObjectを読み取る必要があることを示します。descriptionすでに最後の箇条書きに到達しているため、形式コードは実際には@記号の後に終了し、@Kevin Ballard が指摘したように、-1はリテラル テキストとして解析されます。

于 2011-11-03T05:35:50.863 に答える
5

これは単に「NUM-1」(NUM は数字) を出力するだけです。例を挙げると、数字が 5 の場合、「5-1」と出力されます。

フォーマット文字列を使用する場合、フォーマット トークンの修飾子は、フォーマット タイプ指定子の前に配置する必要があります。この場合、%@トークンに対する修飾子は%と の間で発生する必要があることを意味します@(実際に%@受け入れられる修飾子があるかどうかはわかりません)。

于 2011-11-03T05:26:21.450 に答える
3

subnumber はおそらく NSNumber のようなクラスのオブジェクトです。%d を int に、%f を float に使用するように、%@ は参照のプレースホルダーです。その場合

NSNumber *subnumber = [NSNumber numberWithInt:5];
NSLog([NSString stringWithFormat:@"%@-1", subnumber]);

「5-1」を出力します

于 2011-11-03T05:35:27.743 に答える