stringWithFormat:@“%@ - 1”是什么意思?

时间:2011-11-03 05:22:51

标签: objective-c xcode stringwithformat

我正在阅读别人的代码,他们正在使用%@ - 1格式化整数。我无法在Google上找到任何内容,因为它忽略了符号。还有其他人比我更有经验吗?

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

谢谢!

3 个答案:

答案 0 :(得分:6)

即将打印" NUM-1" (其中NUM是数字)。举个例子,如果数字是5,那将打印" 5-1"。

使用格式字符串时,格式标记的任何修饰符必须出现在格式类型说明符之前。在这种情况下,这意味着%@令牌的任何修饰符必须出现在%@之间(尽管我不确定是否实际存在%@修饰符{{1}} 1}}接受)。

答案 1 :(得分:6)

根据specification

  

每个转换规范由'%'字符或字符序列“%n $”引入,之后按顺序出现以下内容:

     
      
  • 零个或多个标志(按任意顺序),修改转换规范的含义。

  •   
  • 可选的最小字段宽度。如果转换后的值的字节数少于字段宽度,则默认情况下应在左侧填充空格;如果下面描述的左调整标志(' - ')被赋予字段宽度,则它应在右侧填充。字段宽度采用星号('*')的形式,如下所述,或十进制整数。

  •   
  • 一个可选的精度,它给出了d,i,o,u,x和X转换说明符的最小位数; a,a,e,E,f和F转换说明符的基数字符后出现的位数; g和G转换说明符的最大有效位数;或者从[XSI] [Option Start]和S [Option End]转换说明符中的字符串打印的最大字节数。精度采用句点('。')的形式,后跟星号('*'),如下所述,或者是可选的十进制数字字符串,其中空数字字符串被视为零。如果精度与任何其他转换说明符一起出现,则行为未定义。

  •   
  • 可选的长度修饰符,用于指定参数的大小。

  •   
  • 转换说明符字符,指示要应用的转化类型。

  •   

我们正在使用第一种类型的转换,因为这里没有美元符号。请注意上面列表顶部的 in sequence @是转换说明符字符(如here所述),表示我们应该以{{1​​}}的形式访问传入的值并读取其NSObject属性。由于我们已经到达最后一个项目符号点,格式代码实际上在description符号后面结束,正如@Kevin Ballard指出的那样,@被解析为文字文本。

答案 2 :(得分:3)

子编号可能是像NSNumber这样的类的对象。就像我们将%d用于int,%f用于float,%@是用于引用的占位符。在那种情况下

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

将打印'5-1'